Google 生成式 AI 外掛程式

Google 生成式 AI 外掛程式會透過 Gemini APIGemini API in Vertex AI 提供 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 等) 執行流程,系統會自動設定這項屬性。

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

      gcloud auth application-default login
    2. 此外,請確認帳戶已取得 Vertex AI 使用者 IAM 角色 (roles/aiplatform.user)。請參閱 Vertex AI 存取權控管說明文件。

用量

生成模型

如要取得支援模型的參照,請將其 ID 指定為 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 模型產生內容」。

嵌入模型

如要取得支援的嵌入模型參照,請將其 ID 指定為 googlegenai.GoogleAIEmbeddergooglgenai.VertexAIEmbedder

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

支援以下型號:

  • Google AI

    text-embedding-004」和「embedding-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
}

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