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
Crie um diretório para o projeto:
export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
mkdir -p $GENKIT_PROJECT_HOME
cd $GENKIT_PROJECT_HOME
Inicializar um projeto Node.js:
npm init -y
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
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.
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.