Plug-in da IA generativa do Google

O plug-in da IA generativa do Google fornece interfaces para os modelos do Gemini do Google pela API Gemini ou pelo Gemini API in Vertex AI.

Configuração

A configuração depende do provedor escolhido:

IA do Google

Para usar esse plug-in, importe o pacote googlegenai e transmita googlegenai.GoogleAI para WithPlugins() no inicializador do Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), ai.WithPlugins(&googlegenai.GoogleAI{}))

O plug-in exige uma chave de API para a API Gemini, que você pode acessar no Google AI Studio.

Siga um destes procedimentos para configurar o plug-in para usar sua chave de API:

  • Defina a variável de ambiente GEMINI_API_KEY como sua chave de API.

  • Especifique a chave de API ao inicializar o plug-in:

    ai.WithPlugins(&googlegenai.GoogleAI{APIKey: "YOUR_API_KEY"})
    

    No entanto, não incorpore a chave de API diretamente no código. Use este recurso apenas em conjunto com um serviço como Cloud Secret Manager ou similar.

Vertex AI

Para usar esse plug-in, importe o pacote googlegenai e transmita googlegenai.VertexAI para WithPlugins() no inicializador do Genkit:

import "github.com/firebase/genkit/go/plugins/googlegenai"
g, err := genkit.Init(context.Background(), genkit.WithPlugins(&googlegenai.VertexAI{}))

O plug-in exige que você especifique o ID do projeto do Google Cloud, a região para a qual você quer fazer solicitações da API Vertex, e as credenciais do seu projeto do Google Cloud.

  • Por padrão, googlegenai.VertexAI busca o ID do projeto do Google Cloud da variável de ambiente GOOGLE_CLOUD_PROJECT.

    Você também pode passar esse valor diretamente:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • Por padrão, googlegenai.VertexAI recebe o local da API Vertex AI da variável de ambiente GOOGLE_CLOUD_LOCATION.

    Você também pode passar esse valor diretamente:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • Para fornecer credenciais de API, você precisa configurar o Application Default Credentials do Google Cloud.

    1. Para especificar suas credenciais:

      • Se você estiver executando seu fluxo em um ambiente do Google Cloud (Cloud Functions, Cloud Run e outros), isso é definido automaticamente.

      • No ambiente de desenvolvimento local, faça isso executando o seguinte:

      gcloud auth application-default login
    2. Além disso, confirme se a conta recebeu o papel do IAM de usuário da Vertex AI (roles/aiplatform.user). Consulte a documentação do controle de acesso da Vertex AI.

Uso

Modelos geradores

Para acessar uma referência a um modelo compatível, especifique o identificador dele como googlegenai.GoogleAIModel ou googlgenai.VertexAIModel:

model := googlegenai.GoogleAIModel(g, "gemini-2.0-flash")

Como alternativa, crie um ModelRef que associe o nome do modelo à configuração:

modelRef := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
    Temperature: 0.5,
    MaxOutputTokens: 500,
    // Other configuration...
})

Os seguintes modelos são compatíveis: gemini-1.5-pro, gemini-1.5-flash, gemini-2.0-pro, gemini-2.0-flash e outros modelos experimentais.

As referências de modelo têm um método Generate() que chama a API Google:

resp, err := genkit.Generate(ctx, g, ai.WithModel(modelRef), ai.WithPrompt("Tell me a joke."))
if err != nil {
      return err
}

log.Println(resp.Text())

Consulte Como gerar conteúdo com modelos de IA para mais informações.

Como incorporar modelos

Para acessar uma referência a um modelo de embedding aceito, especifique o identificador dele como googlegenai.GoogleAIEmbedder ou googlgenai.VertexAIEmbedder:

embeddingModel := googlegenai.GoogleAIEmbedder(g, "text-embedding-004")

Os seguintes modelos são compatíveis:

  • IA do Google

    text-embedding-004 e embedding-001

  • Vertex AI

    textembedding-gecko@003, textembedding-gecko@002, textembedding-gecko@001, text-embedding-004, textembedding-gecko-multilingual@001, text-multilingual-embedding-002 e multimodalembedding

As referências do incorporador têm um método Embed() que chama a API Google AI:

resp, err := ai.Embed(ctx, embeddingModel, ai.WithDocs(userInput))
if err != nil {
      return err
}

Você também pode transmitir um incorporador ao método Index() de um indexador e ao método Retrieve() de um recuperador:

if err := ai.Index(ctx, myIndexer, ai.WithDocs(docsToIndex...)); err != nil {
      return err
}
resp, err := ai.Retrieve(ctx, myRetriever, ai.WithDocs(userInput))
if err != nil {
      return err
}

Consulte Geração aumentada de recuperação (RAG) para mais informações.