Começar

Para começar a usar o Firebase Genkit, instale a CLI do Genkit e execute genkit init em um projeto Node.js. O restante desta página mostra como fazer isso.

Requisitos

Node.js 20 ou mais recente.

Recomendação: as APIs nvm e As ferramentas do nvm-windows são uma forma conveniente de instalar o Node.

Instalar o Genkit

Instale a CLI do Genkit executando o seguinte comando:

npm i -g genkit

Esse comando instala a CLI do Genkit no diretório de instalação do nó para que possa ser usado fora de um projeto Node.

Criar e analisar um projeto de amostra

  1. 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 como lib/index.js.

  2. Inicialize um projeto Genkit:

    genkit init
    
    1. Selecione Outra plataforma como a opção de plataforma de implantação (modelos para O Firebase Cloud Functions e o Google Cloud Run também estão disponíveis).

    2. Selecione o modelo.

      Gemini (IA do Google)

      A maneira mais simples de começar é com a API Gemini da IA do Google. Confirme se ela está disponível na sua região.

      Gere uma chave de API para à API Gemini usando o Google AI Studio. Depois, defina a variável de ambiente GOOGLE_GENAI_API_KEY para sua chave:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      Se a API Gemini da IA do Google não estiver disponível na sua região, considere usar a API Vertex AI, que também oferece o Gemini e outros modelos. Você precisa ter um projeto do Google Cloud com faturamento, ativar a API AI Platform e definir mais algumas variáveis de ambiente:

      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.

    3. Escolha respostas padrão para o restante das perguntas, o que inicializará a pasta do seu projeto com algum 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.

    O arquivo tem a seguinte aparência (as etapas de configuração do plug-in podem ser diferentes se você selecionar 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 criar os recursos de IA do seu app com o Genkit, você provavelmente criar fluxos com várias etapas, como pré-processamento de entradas, criação sofisticada de comandos, integrando informações externas fontes para geração aumentada de recuperação (RAG) e muito mais.

  3. Agora é possível executar e explorar localmente os recursos do Genkit e o projeto de amostra na sua máquina. Faça o download e inicie a interface do desenvolvedor do Genkit:

    genkit start
    

    Esta é a interface do desenvolvedor do Genkit

    A interface do desenvolvedor do Genkit agora está em execução na sua máquina. Ao executar modelos ou fluxos na próxima etapa, sua máquina executará as tarefas de orquestração necessárias para que as etapas do seu fluxo funcionem juntas, as chamadas para serviços externos, como a API Gemini, continuarão sendo feitas em servidores ativos.

    Além disso, como você está em um ambiente de desenvolvimento, o Genkit armazenará traces e estado de fluxo em arquivos locais.

  4. A interface do desenvolvedor do Genkit é baixada e aberta automaticamente quando você executa o comando genkit start.

    A UI do desenvolvedor permite ver quais fluxos você definiu e modelos que você configurou, executá-los e examinar rastreamentos de execuções anteriores. Teste alguns destes recursos:

    • Na guia Executar, há uma lista de todos os fluxos que você definiu e todos os modelos que foram configurados por plug-ins.

      Clique em menuSuggestionFlow e tente executar com algum texto de entrada (por exemplo, "cat"). Se tudo correr bem, você será recompensado com uma sugestão de menu para um gato restaurante temático.

    • Na guia Inspect, é exibido um histórico de execuções de fluxo. Para cada é possível ver os parâmetros que foram passados para o fluxo e um rastreamento de cada etapa enquanto elas são executadas.

Próximas etapas

Saiba como criar e implantar seu app Genkit com o Firebase. Cloud Run ou qualquer plataforma Node.js.