Vertex AI 插件

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

要求

如果您想在本地运行使用此插件的 flow,则需要安装 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、要向其发出 Vertex API 请求的区域,以及 Google Cloud 项目凭据。

  • 默认情况下,vertexai.Init() 会从 GCLOUD_PROJECT 环境变量获取 Google Cloud 项目 ID。

    您也可以直接传递此值:

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

    您也可以直接传递此值:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
    	return err
    }
    
  • 如需提供 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 访问权限控制文档。

用法

生成模型

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

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

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

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

genRes, err := ai.GenerateText(ctx, langModel, ai.WithTextPrompt("Tell me a joke."))
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 := ai.Embed(ctx, embeddingModel, ai.WithEmbedText(userInput))
if err != nil {
	return err
}

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

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

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