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、 リージョン API リクエストの送信先と、Google Cloud プロジェクトが 認証情報が必要です。
デフォルトでは、
vertexai.Init()
は Google Cloud プロジェクト ID を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 アプリケーションを設定する必要があります デフォルトの認証情報。
認証情報を指定するには:
Google Cloud 環境(Cloud Functions、Cloud Run など)では、これは自動的に設定されます。
そのためには、ローカルの開発環境で次のコマンドを実行します。
gcloud auth application-default login
- 他の環境については、アプリケーションのデフォルト認証情報をご覧ください。 ドキュメントをご覧ください。
また、アカウントに Vertex AI ユーザー IAM ロールが付与されていることを確認します。 (
roles/aiplatform.user
)。Vertex AI のアクセス制御を確認する。 ドキュメントをご覧ください。
用途
生成モデル
サポートされているモデルへの参照を取得するには、その識別子を指定します。
langModel := vertexai.Model("gemini-1.5-pro")
次のモデルがサポートされています: gemini-1.0-pro
、gemini-1.5-pro
、
gemini-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
}
詳しくは、コンテンツの生成をご覧ください。
エンベディング モデル
サポートされているエンベディング モデルへの参照を取得するには、その識別子を指定します。
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 := embeddingModel.Embed(ctx, &ai.EmbedRequest{
Documents: []*ai.Document{ai.DocumentFromText(userInput, nil)},
})
if err != nil {
return err
}
インデクサの Index()
メソッドと Retriever にエンべディングを渡すこともできます。
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)をご覧ください。