Google 生成式 AI 插件

Google 生成式 AI 插件通过 Gemini APIVertex 中的 Gemini API 提供 Google 的 Gemini 模型的接口。

配置

配置取决于您选择的提供方:

Google AI

如需使用此插件,请导入 googlegenai 软件包,并在 Genkit 初始化程序中将 googlegenai.GoogleAI 传递给 WithPlugins()

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

该插件需要使用 Gemini API 的 API 密钥,您可以从 Google AI Studio 获取该密钥。

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

  • GEMINI_API_KEY 环境变量设置为 API 密钥。

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

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

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

Vertex AI

如需使用此插件,请导入 googlegenai 软件包,并在 Genkit 初始化程序中将 googlegenai.VertexAI 传递给 WithPlugins()

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

该插件要求您指定 Google Cloud 项目 ID、要向其发出 Vertex API 请求的区域,以及 Google Cloud 项目凭据。

  • 默认情况下,googlegenai.VertexAI 会从 GOOGLE_CLOUD_PROJECT 环境变量获取 Google Cloud 项目 ID。

    您也可以直接传递此值:

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • 默认情况下,googlegenai.VertexAI 会从 GOOGLE_CLOUD_LOCATION 环境变量获取 Vertex AI API 位置。

    您也可以直接传递此值:

    genkit.WithPlugins(&googlegenai.VertexAI{Location: "us-central1"})
    
  • 如需提供 API 凭据,您需要设置 Google Cloud 应用默认凭据。

    1. 如需指定凭据,请按照以下所述操作:

      • 如果您要从 Google Cloud 环境(Cloud Functions、Cloud Run 等)运行 flow,系统会自动设置。

      • 在本地开发环境中,通过运行以下命令执行此操作:

      gcloud auth application-default login
    2. 此外,请确保为该账号授予 Vertex AI User IAM 角色 (roles/aiplatform.user)。请参阅 Vertex AI 访问权限控制文档。

用法

生成模型

如需获取对受支持模型的引用,请将其标识符指定为 googlegenai.GoogleAIModelgooglgenai.VertexAIModel

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

或者,您也可以创建一个 ModelRef,将模型名称与其配置进行配对:

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

支持以下模型:gemini-1.5-progemini-1.5-flashgemini-2.0-progemini-2.0-flash 以及其他实验性模型。

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

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

log.Println(resp.Text())

如需了解详情,请参阅使用 AI 模型生成内容

嵌入模型

如需获取对受支持嵌入模型的引用,请将其标识符指定为 googlegenai.GoogleAIEmbeddergooglgenai.VertexAIEmbedder

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

支持以下模型:

  • Google AI

    text-embedding-004embedding-001

  • Vertex AI

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

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

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

您还可以将嵌入器传递给索引器的 Index() 方法和检索器的 Retrieve() 方法:

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
}

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