Vertex AI プラグイン

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

要件

このプラグインを使用するフローをローカルで実行する場合は、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 など)からフローを実行している場合は、自動的に設定されます。

      • ローカル開発環境では、次のコマンドを実行します。

      gcloud auth application-default login
      
    2. また、アカウントに Vertex AI ユーザー IAM ロール(roles/aiplatform.user)が付与されていることを確認します。Vertex AI のアクセス制御のドキュメントをご覧ください。

用途

生成モデル

サポートされているモデルへの参照を取得するには、その ID を指定します。

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
}

詳しくは、コンテンツの生成をご覧ください。

埋め込みモデル

サポートされている埋め込みモデルへの参照を取得するには、その 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 := 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)をご覧ください。