Implantar fluxos em qualquer plataforma Node.js

O Firebase Genkit tem integrações integradas que ajudam a implantar seus fluxos no Cloud Functions para Firebase e no Google Cloud Run. No entanto, você também pode implantar seus fluxos em qualquer plataforma que possa servir um app Express.js, seja um serviço em nuvem ou auto-hospedado.

Esta página, como exemplo, orienta você no processo de implantação do fluxo de amostra padrão.

Antes de começar

  • Node.js 20+: confirme se o ambiente está usando a versão 20 ou mais recente do Node.js (node --version).
  • Você precisa conhecer o conceito de fluxos do Genkit.

1. Criar o projeto

  1. Crie um diretório para o projeto:

    export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
    mkdir -p $GENKIT_PROJECT_HOME
    cd $GENKIT_PROJECT_HOME
  2. Inicializar um projeto Node.js:

    npm init -y
  3. Instale o Genkit e as dependências necessárias:

    npm install --save genkit @genkit-ai/googleai
    npm install -D genkit-cli typescript tsx

2. Configurar o app do Genkit

  1. Configurar um fluxo e um servidor de exemplo:

    Em src/index.ts, defina um fluxo de exemplo e configure o servidor de fluxo:

    import { genkit } from 'genkit';
    import { googleAI, gemini15Flash } from '@genkit-ai/googleai';
    
    const ai = genkit({
      plugins: [googleAI()],
      model: gemini15Flash,
    });
    
    const helloFlow = ai.defineFlow(
      {
        name: 'helloFlow',
        inputSchema: z.object({ name: z.string() }),
        outputSchema: z.string(),
      },
      async (input) => {
        const { text } = ai.generate('Say hello to ${input.name}');
        return text;
      }
    );
    
    ai.startFlowServer({
      flows: [menuSuggestionFlow],
    });
    

    Há também alguns parâmetros opcionais para startFlowServer que você pode especificar:

    • port: a porta de rede a ser detectada. Se não for especificado, o servidor vai detectar na porta definida na variável de ambiente PORT. Se PORT não estiver definido, o padrão será 3400.
    • cors: a política CORS do servidor de fluxo. Se você vai acessar esses endpoints em um aplicativo da Web, provavelmente vai precisar especificar isso.
    • pathPrefix: um prefixo de caminho opcional para adicionar antes dos endpoints do fluxo.
    • jsonParserOptions: opções a serem transmitidas ao analisador de corpo de JSON do Express.
  2. Configurar as credenciais do provedor do modelo:

    Configure as variáveis de ambiente necessárias para o provedor de modelo. Neste guia, vamos usar a API Gemini do Google AI Studio como exemplo.

    Gerar uma chave de API no Google AI Studio

    Depois de criar uma chave de API, defina a variável de ambiente GOOGLE_GENAI_API_KEY como sua chave com o seguinte comando:

    export GOOGLE_GENAI_API_KEY=<your API key>

    Diferentes provedores de implantação têm maneiras diferentes de proteger sua chave de API no ambiente. Por motivos de segurança, verifique se a chave de API não está exposta publicamente.

3. Preparar seu projeto Node.js para implantação

Adicionar scripts de inicialização e build a package.json

Para implantar um projeto Node.js, defina os scripts start e build em package.json. Para um projeto TypeScript, esses scripts ficam assim:

"scripts": {
  "start": "node --watch lib/index.js",
  "build": "tsc"
},

Criar e testar localmente

Execute o comando de build, inicie o servidor e teste-o localmente para confirmar se ele funciona como esperado.

npm run build
npm start

Em outra janela de terminal, teste o endpoint:

curl -X POST "http://127.0.0.1:3400/menuSuggestionFlow" \
  -H "Content-Type: application/json" \
  -d '{"data": "banana"}'

Opcional: iniciar a interface do desenvolvedor

É possível usar a interface do desenvolvedor para testar fluxos de forma interativa durante o desenvolvimento:

npx genkit start -- npm run start

Acesse http://localhost:4000/flows para testar seus fluxos na interface.

4. Implantar o projeto

Depois que o projeto for configurado e testado localmente, você poderá implantar em qualquer plataforma compatível com o Node.js. As etapas de implantação variam de acordo com o provedor, mas, geralmente, você vai configurar as seguintes configurações:

Configuração Valor
Ambiente de execução Node.js 20 ou mais recente
Comando de build npm run build
Comando de início npm start
Variáveis de ambiente Defina GOOGLE_GENAI_API_KEY=<your-api-key> e outros segredos necessários

O comando start (npm start) precisa apontar para o ponto de entrada compilado, normalmente lib/index.js. Adicione todas as variáveis de ambiente necessárias para sua plataforma de implantação.

Após a implantação, use o URL do serviço fornecido para invocar o fluxo como um endpoint HTTPS.