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.

Configuração

Para usar esse plug-in, importe o pacote googleai e chame googleai.Init():

import "github.com/firebase/genkit/go/plugins/googleai"
if err := googleai.Init(ctx, nil); err != nil {
    return err
}

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

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

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

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

    if err := googleai.Init(ctx, &googleai.Config{APIKey: yourKey}); err != nil {
      return err
    }
    

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

Uso

Modelos geradores

Para acessar uma referência a um modelo compatível, especifique o identificador dele:

langModel := googleai.Model("gemini-1.5-pro")

Os seguintes modelos são compatíveis: gemini-1.0-pro, gemini-1.5-pro e gemini-1.5-flash

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

genRes, err := langModel.Generate(ctx, ai.NewGenerateRequest(
    nil, ai.NewUserTextMessage("Tell me a joke.")), nil)
if err != nil {
    return err
}

Consulte Como gerar conteúdo para mais informações.

Como incorporar modelos

Para acessar uma referência a um modelo de embedding compatível, especifique o identificador dele:

embeddingModel := googleai.Embedder("text-embedding-004")

Os seguintes modelos são compatíveis: text-embedding-004 e embedding-001.

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

embedRes, err := embeddingModel.Embed(ctx, &ai.EmbedRequest{
    Documents: []*ai.Document{ai.DocumentFromText(userInput, nil)},
})
if err != nil {
    return err
}

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

if err := myIndexer.Index(ctx, &ai.IndexerRequest{Documents: docsToIndex}); err != nil {
    return err
}
retrieveRes, err := myRetriever.Retrieve(ctx, &ai.RetrieverRequest{
    Document: ai.DocumentFromText(userInput, nil),
})
if err != nil {
    return err
}

Consulte Geração aumentada de recuperação (RAG, na sigla em inglês) para mais informações.