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 アプリケーションのデフォルト認証情報を設定する必要があります。
認証情報を指定するには:
Google Cloud 環境(Cloud Functions、Cloud Run など)からフローを実行している場合は、自動的に設定されます。
ローカル開発環境では、次のコマンドを実行します。
gcloud auth application-default login
- 他の環境については、アプリケーションのデフォルト認証情報のドキュメントをご覧ください。
また、アカウントに Vertex AI ユーザー IAM ロール(
roles/aiplatform.user
)が付与されていることを確認します。Vertex AI のアクセス制御のドキュメントをご覧ください。
用途
生成モデル
サポートされているモデルへの参照を取得するには、その ID を指定します。
langModel := vertexai.Model("gemini-1.5-flash")
サポートされているモデルは、gemini-1.0-pro
、gemini-1.5-pro
、gemini-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@003
、textembedding-gecko@002
、textembedding-gecko@001
、text-embedding-004
、textembedding-gecko-multilingual@001
、text-multilingual-embedding-002
、multimodalembedding
です。
エンベッダー参照には、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)をご覧ください。