Vertex AI 插件

Vertex AI 插件为多个 Google 生成式 AI 模型提供了接口 通过 Vertex AI API 导入。

要求

如果您希望在本地运行使用此插件的流,则需要 已安装 Google Cloud CLI 工具

配置

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

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

该插件会要求您指定 Google Cloud 项目 ID、 region [地区] 您的 Google Cloud 项目 凭据。

  • 默认情况下,vertexai.Init() 会从 GCLOUD_PROJECT 环境变量。

    您也可以直接传递此值:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
      return err
    }
    
  • 默认情况下,vertexai.Init() 会从 GCLOUD_LOCATION 环境变量。

    您也可以直接传递此值:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
      return err
    }
    
  • 如需提供 API 凭据,您需要设置 Google Cloud 应用 默认凭据。

    1. 如需指定凭据,请执行以下操作:

      • 如果您从 Google Cloud 环境 Functions、Cloud Run 等),这是自动设置的。

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

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

用法

生成模型

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

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

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

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

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

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

嵌入模型

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

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

支持以下模型:textembedding-gecko@003textembedding-gecko@002textembedding-gecko@001text-embedding-004textembedding-gecko-multilingual@001text-multilingual-embedding-002multimodalembedding.

嵌入器引用具有调用 Vertex 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)