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 [區域] 以及要傳送 Vertex API 要求的 Google Cloud 專案 憑證

  • 根據預設,vertexai.Init() 會從 GCLOUD_PROJECT 環境變數。

    您也可以直接傳送這個值:

    if err := vertexai.Init(ctx, &vertexai.Config{ProjectID: yourProjectID}); err != nil {
      return err
    }
    
  • 根據預設,vertexai.Init() 會從以下項目取得 Vertex AI API 位置: GCLOUD_LOCATION 環境變數。

    您也可以直接傳送這個值:

    if err := vertexai.Init(ctx, &vertexai.Config{Location: "asia-south1"}); err != nil {
      return err
    }
    
  • 如要提供 API 憑證,您必須設定 Google Cloud 應用程式 。

    1. 指定憑證的方法如下:

      • 如果是從 Google Cloud 環境 (Cloud) 環境 函式、Cloud Run 等),系統會自動設定此項目。

      • 在本機開發環境中,執行下列指令:

      gcloud auth application-default login
      
    2. 此外,請確認已授予帳戶「Vertex AI 使用者」這個 IAM 角色 (roles/aiplatform.user)。查看 Vertex AI 存取權控管 文件。

用量

生成模型

如要取得支援模型的參照,請指定模型 ID:

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
}

詳情請參閱產生內容

嵌入模型

如要取得支援嵌入模型的參照,請指定模型 ID:

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
}

您也可以將嵌入程式傳遞至索引器的 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) 一文。