Comece agora

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

  1. Instale a CLI do Genkit executando o seguinte comando:

    npm i -g genkit
    
  2. 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.

  3. Inicialize um projeto Genkit:

    genkit init
    
    1. 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).

    2. 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.

    3. 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.

  4. 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
    

    Esta é a interface do desenvolvedor do Genkit

    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.

  5. 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.