Vertex AI プラグイン

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

  • Gemini 1.0 Pro および Gemini 1.0 Pro Vision テキスト生成
  • Imagen2 画像生成
  • Gecko テキスト エンベディングの生成

また、Vertex AI の Rapid Evaluation API を介して評価指標のサブセットにアクセスすることもできます。

インストール

npm i --save @genkit-ai/vertexai

このプラグインを使用するフローをローカルで実行する場合は、Google Cloud CLI ツールもインストールする必要があります。

設定

このプラグインを使用するには、configureGenkit() を呼び出すときに指定します。

import { vertexAI } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({ projectId: 'your-cloud-project', location: 'us-central1' }),
  ],
  // ...
});

このプラグインでは、Google Cloud プロジェクト ID、Vertex API リクエストを行うリージョン、Google Cloud プロジェクトの認証情報を指定する必要があります。

  • Google Cloud プロジェクト ID を指定するには、vertexAI() 構成で projectId を設定するか、GCLOUD_PROJECT 環境変数を設定します。Google Cloud 環境(Cloud Functions、Cloud Run など)からフローを実行している場合、GCLOUD_PROJECT は自動的に環境のプロジェクト ID に設定されます。

  • API のロケーションを指定するには、vertexAI() 構成で location を設定するか、GCLOUD_LOCATION 環境変数を設定します。

  • API 認証情報を提供するには、Google Cloud アプリケーションのデフォルト認証情報を設定する必要があります。

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

      • Google Cloud 環境(Cloud Functions、Cloud Run など)からフローを実行している場合、これは自動的に設定されます。

      • ローカル開発環境で、次のコマンドを実行してください。

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

使用量

生成 AI モデル

このプラグインは、サポートされている生成 AI モデルへの参照を静的にエクスポートします。

import { geminiPro, geminiProVision, imagen2 } from '@genkit-ai/vertexai';

これらのリファレンスを使用して、generate() で使用するモデルを指定できます。

const llmResponse = await generate({
  model: geminiPro,
  prompt: 'What should I do when I visit Melbourne?',
});

このプラグインは、Gecko テキスト エンベディング モデルへの参照も静的にエクスポートします。

import { textEmbeddingGecko } from '@genkit-ai/vertexai';

このリファレンスを使用して、インデクサーまたはレトリーバーが使用するエンベダーを指定できます。たとえば、Chroma DB を使用する場合:

configureGenkit({
  plugins: [
    chroma([
      {
        embedder: textEmbeddingGecko,
        collectionName: 'my-collection',
      },
    ]),
  ],
});

または、エンベディングを直接生成することもできます。

// import { embed, EmbedderArgument } from '@genkit-ai/ai/embedder';
const embedding = await embed({
  embedder: textEmbeddingGecko,
  content: 'How many widgets do you have in stock?',
});

Vertex AI Model Garden での Anthropic Claude 3

Vertex AI Model Garden で Claude 3 モデル(haikusonnetopus)にアクセスできる場合は、Genkit で使用できます。

Vertex AI Model Garden モデルを有効にする場合の構成例を次に示します。

import {
  vertexAI,
  claude3Haiku,
  claude3Sonnet,
  claude3Opus,
} from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      location: 'us-central1',
      modelGardenModels: [claude3Haiku, claude3Sonnet, claude3Opus],
    }),
  ],
});

次に、それらを通常のモデルとして使用します。

const llmResponse = await generate({
  model: claude3Sonnet,
  prompt: 'What should I do when I visit Melbourne?',
});

エバリュエータ

Vertex AI Rapid Evaluation のエバリュエータを使用するには、vertexAI プラグイン構成に evaluation ブロックを追加します。

import { vertexAI, VertexAIEvaluationMetricType } from '@genkit-ai/vertexai';

export default configureGenkit({
  plugins: [
    vertexAI({
      projectId: 'your-cloud-project',
      location: 'us-central1',
      evaluation: {
        metrics: [
          VertexAIEvaluationMetricType.SAFETY,
          {
            type: VertexAIEvaluationMetricType.ROUGE,
            metricSpec: {
              rougeType: 'rougeLsum',
            },
          },
        ],
      },
    }),
  ],
  // ...
});

上記の構成では、Safety 指標と ROUGE 指標にエバリュエータが追加されます。この例では 2 つのアプローチを示しています。Safety 指標ではデフォルトの仕様を使用しますが、ROUGE 指標では、ルージュタイプを rougeLsum に設定するカスタマイズされた仕様を使用します。

どちらのエバリュエータも、互換性のあるデータセット(output フィールドと reference フィールドを含むデータセット)で genkit eval:run コマンドを使用して実行できます。Safety エバリュエータは output のみを必要とするため、genkit eval:flow -e vertexai/safety コマンドを使用して実行することもできます。