Google Generative AI 插件

Google 生成式 AI 插件为 Google 的 Gemini 模型提供了接口 (通过 Gemini API 实现)。

配置

如需使用此插件,请导入 googleai 软件包并调用 googleai.Init()

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

该插件需要 Gemini API 的 API 密钥,您可以从 Google AI Studio

通过执行以下任一操作,将插件配置为使用您的 API 密钥:

  • GOOGLE_GENAI_API_KEY 环境变量设置为您的 API 密钥。

  • 在初始化插件时指定 API 密钥:

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

    但是,请勿直接在代码中嵌入您的 API 密钥!仅使用此功能 与 Cloud Secret Manager 或类似服务结合使用。

用法

生成模型

如需获取对受支持模型的引用,请指定其标识符:

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

支持以下模型:gemini-1.0-progemini-1.5-progemini-1.5-flash.

模型引用具有调用 Google AI API 的 Generate() 方法:

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

如需了解详情,请参阅生成内容

嵌入模型

如需获取对支持的嵌入模型的引用,请指定其标识符:

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

支持以下模型:text-embedding-004embedding-001

嵌入器引用具有调用 Google AI API 的 Embed() 方法:

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

您还可以将 Embedder 传递给索引器的 Index() 方法和检索器的 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
}

如需了解详情,请参阅检索增强生成 (RAG)