Vertex AI プラグイン

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 アプリケーションを設定する必要があります デフォルトの認証情報。

    1. 認証情報を指定するには:

      • Google Cloud 環境(Cloud Functions、Cloud Run など)では、これは自動的に設定されます。

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

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

用途

生成モデル

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

langModel := vertexai.Model("gemini-1.5-pro")

次のモデルがサポートされています: gemini-1.0-progemini-1.5-progemini-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@003textembedding-gecko@002 さん、textembedding-gecko@001 さん、text-embedding-004 さん、 textembedding-gecko-multilingual@001text-multilingual-embedding-002multimodalembedding

エンべディング参照には、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)をご覧ください。