Para começar a usar o Firebase Genkit, instale a CLI Genkit e execute
genkit init
em um projeto do Node.js. O restante desta página mostra como fazer isso.
Requisitos
Node.js 20 ou mais recente.
Procedimento
Instale a CLI do Genkit executando o seguinte comando:
npm i -g genkit
Crie um novo projeto Node:
mkdir genkit-intro && cd genkit-intro
npm init -y
Acesse package.json e verifique se o campo
main
está definido comolib/index.js
.Inicialize um projeto Genkit:
genkit init
Selecione Outra plataforma como a opção de plataforma de implantação (também estão disponíveis modelos para o Firebase Cloud Functions e o Google Cloud Run).
Selecione o modelo:
Gemini (IA do Google)
A maneira mais simples de começar é com a API Gemini da IA do Google. Verifique se ele está disponível na sua região.
Gere uma chave de API para a API Gemini usando o Google AI Studio. Em seguida, defina a variável de ambiente
GOOGLE_GENAI_API_KEY
como sua chave:export GOOGLE_GENAI_API_KEY=<your API key>
Gemini (Vertex AI)
Se a API Gemini do Google AI não estiver disponível na sua região, considere usar a API Vertex AI, que também oferece Gemini e outros modelos. Você precisa ter um projeto do Google Cloud com faturamento, ativar a API AI Platform e definir algumas variáveis de ambiente extras:
gcloud services enable aiplatform.googleapis.com
export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
Consulte os preços da Vertex AI em https://cloud.google.com/vertex-ai/generative-ai/pricing.
Escolha respostas padrão para o restante das perguntas, que vão inicializar a pasta do projeto com um exemplo de código.
O comando
genkit init
cria um arquivo de origem de amostra,index.ts
, que define um único fluxo,menuSuggestionFlow
, que solicita que um LLM sugira um item para um restaurante com um determinado tema.Esse arquivo se parece com o seguinte (as etapas de configuração do plug-in podem ser diferentes se você tiver selecionado a Vertex AI):
import * as z from 'zod'; // Import the Genkit core libraries and plugins. import { generate } from '@genkit-ai/ai'; import { configureGenkit } from '@genkit-ai/core'; import { defineFlow, startFlowsServer } from '@genkit-ai/flow'; import { googleAI } from '@genkit-ai/googleai'; // Import models from the Google AI plugin. The Google AI API provides access to // several generative models. Here, we import Gemini 1.5 Flash. import { gemini15Flash } from '@genkit-ai/googleai'; configureGenkit({ plugins: [ // Load the Google AI plugin. You can optionally specify your API key // by passing in a config object; if you don't, the Google AI plugin uses // the value from the GOOGLE_GENAI_API_KEY environment variable, which is // the recommended practice. googleAI(), ], // Log debug output to tbe console. logLevel: 'debug', // Perform OpenTelemetry instrumentation and enable trace collection. enableTracingAndMetrics: true, }); // Define a simple flow that prompts an LLM to generate menu suggestions. export const menuSuggestionFlow = defineFlow( { name: 'menuSuggestionFlow', inputSchema: z.string(), outputSchema: z.string(), }, async (subject) => { // Construct a request and send it to the model API. const llmResponse = await generate({ prompt: `Suggest an item for the menu of a ${subject} themed restaurant`, model: gemini15Flash, config: { temperature: 1, }, }); // Handle the response from the model API. In this sample, we just convert // it to a string, but more complicated flows might coerce the response into // structured output or chain the response into another LLM call, etc. return llmResponse.text(); } ); // Start a flow server, which exposes your flows as HTTP endpoints. This call // must come last, after all of your plug-in configuration and flow definitions. // You can optionally specify a subset of flows to serve, and configure some // HTTP server options, but by default, the flow server serves all defined flows. startFlowsServer();
Ao desenvolver os recursos de IA do seu app com o Genkit, você provavelmente vai criar fluxos com várias etapas, como pré-processamento de entrada, criação de comandos mais sofisticada, integração de fontes de informações externas para geração aumentada de recuperação (RAG, na sigla em inglês) e muito mais.
Agora é possível executar e explorar os recursos do Genkit e o projeto de amostra localmente na sua máquina. Faça o download e inicie a interface do desenvolvedor do Genkit:
genkit start
A interface do desenvolvedor do Genkit agora está em execução na sua máquina. Quando você executar modelos ou fluxos na próxima etapa, sua máquina realizará as tarefas de orquestração necessárias para que as etapas do fluxo funcionem juntas. As chamadas para serviços externos, como a API Gemini, continuarão sendo feitas nos servidores ativos.
Além disso, como você está em um ambiente de desenvolvimento, o Genkit armazena rastros e o estado do fluxo em arquivos locais.
A interface do desenvolvedor do Genkit é baixada e aberta automaticamente quando você executa o comando
genkit start
.A interface do desenvolvedor permite ver quais fluxos foram definidos e os modelos configurados, executá-los e examinar os rastros de execuções anteriores. Teste alguns destes recursos:
Na guia Run, você verá uma lista de todos os fluxos definidos e os modelos configurados por plug-ins.
Clique em menuSuggestionFlow e tente executar com um texto de entrada (por exemplo,
"cat"
). Se tudo correr bem, você será recompensado com uma sugestão de menu para um restaurante com tema de gato.Na guia Inspect, é exibido um histórico de execuções de fluxo. Para cada fluxo, é possível ver os parâmetros que foram passados para o fluxo e um rastreamento de cada etapa durante a execução.
Próximas etapas
Confira como criar e implantar seu app Genkit com o Firebase, o Cloud Run ou qualquer plataforma Node.js.