Google Generative AI プラグイン

Google Generative AI プラグインは、Gemini API または Vertex の Gemini API を介して Google の Gemini モデルへのインターフェースを提供します。

構成

構成は、選択したプロバイダによって異なります。

Google AI

このプラグインを使用するには、googlegenai パッケージをインポートし、Genkit イニシャライザで googlegenai.GoogleAIWithPlugins() に渡します。

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

このプラグインには Gemini API の 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.VertexAIWithPlugins() に渡します。

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.VertexAIGOOGLE_CLOUD_PROJECT 環境変数から Google Cloud プロジェクト ID を取得します。

    この値を直接渡すこともできます。

    genkit.WithPlugins(&googlegenai.VertexAI{ProjectID: "my-project-id"})
    
  • デフォルトでは、googlegenai.VertexAIGOOGLE_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.GoogleAIModel または googlgenai.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.GoogleAIEmbedder または googlgenai.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)をご覧ください。