評価を実行する

このページでは、Gen AI Evaluation Service を使用して生成言語モデルとアプリケーションの評価を実行する方法について説明します。

始める前に

Vertex AI SDK をインストールする

Vertex AI SDK for Python から生成 AI 評価モジュールをインストールするには、次のコマンドを実行します。

!pip install -q google-cloud-aiplatform[evaluation]

詳細については、Vertex AI SDK for Python をインストールするをご覧ください。

Vertex AI SDK を認証する

Vertex AI SDK for Python をインストールしたら、認証を行う必要があります。以下のトピックでは、ローカルで作業している場合と Colaboratory で作業している場合に、Vertex AI SDK で認証する方法について説明します。

  • ローカルで開発している場合は、ローカル環境でアプリケーションのデフォルト認証情報(ADC)を設定します。

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
      
    2. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login
      

      ログイン画面が表示されます。ログインすると、ADC で使用されるローカル認証情報ファイルに認証情報が保存されます。詳細については、ローカル開発環境の ADC の設定をご覧ください。

  • Colaboratory で作業している場合は、Colab のセルで次のコマンドを実行して認証します。

    from google.colab import auth
    auth.authenticate_user()
    

    このコマンドを実行するとウィンドウが開き、認証を完了できます。

サービス アカウントについて

サービス アカウントは、Gen AI Evaluation Service がモデルベースの評価指標の Vertex AI の Gemini API から予測を取得するために使用されます。このサービス アカウントは、Gen AI Evaluation Service への最初のリクエストで自動的にプロビジョニングされます。

名前 説明 メールアドレス ロール
Vertex AI Rapid Eval サービス エージェント モデルベースの評価で予測を行うために使用されるサービス アカウント。 service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com roles/aiplatform.rapidevalServiceAgent

Rapid Eval のサービス エージェントに関連付けられている権限は次のとおりです。

ロール 権限
Vertex AI Rapid Eval サービス エージェント(roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

評価を実行する

Gen AI Evaluation Service では、評価の実行に次のクライアント ベースのプロセスを使用します。

  1. run_inference(): 与えられた一連のプロンプトに対するモデルからのレスポンスを生成します。

  2. evaluate(): 生成されたレスポンスの指標を計算します。

eval_dataset = client.evals.run_inference(
    model="gemini-2.5-flash",
src="gs://vertex-evaluation-llm-dataset-us-central1/genai_eval_sdk/test_prompts.jsonl",
)
eval_dataset.show()

eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.TEXT_QUALITY,
        types.RubricMetric.QUESTION_ANSWERING_QUALITY,
        types.Metric(name='bleu'),
        types.Metric(name='rouge_1'),
    ]
)
eval_result.show()

1 回の評価で複数の AI モデルまたはシステムのパフォーマンスを分析するには、候補ごとにレスポンスを生成し、それらをリストとして evaluate() メソッドに渡します。

inference_result_1 = client.evals.run_inference(
    model="gemini-2.0-flash",
    src=prompts_df,
)
inference_result_2 = client.evals.run_inference(
    model="gemini-2.5-flash",
    src=prompts_df,
)

# Compare the responses against each other
comparison_result = client.evals.evaluate(
    dataset=[inference_result_1, inference_result_2],
    metrics=[
        types.RubricMetric.TEXT_QUALITY,
        types.RubricMetric.INSTRUCTION_FOLLOWING,
    ]
)

comparison_result.show()

生成されたルーブリックを確認または再利用して評価する

適応型ルーブリックを事前に���成して評価前に確認したり、以前に生成したルーブリックを再利用したりするには、次のコードを使用します。

# Step 1. Generate rubrics
# Rubrics would be saved in a group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
    src=prompts_df,
    rubric_group_name="general_quality_rubrics",
    predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)

# Step 2. Run Inference
eval_dataset = client.evals.run_inference(
    model=inference_model,
    src=data_with_rubrics,
)

# Step 3. Evaluate with provided rubrics
# The group of rubric named "general_quality_rubrics" will be used for evaluation.
eval_result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[types.RubricMetric.GENERAL_QUALITY(
      rubric_group_name="general_quality_rubrics",
    )],
)
  • generate_rubrics(): 指標とペアにした事前定義のワークフローを使用してルーブリックを生成します。

  • run_inference(): 与えられた一連のプロンプトに対するモデルからのレスポンスを生成します。

  • evaluate(): 提供されたルーブリックに基づいてレスポンスを検証します。

非同期の大規模な評価

大規模なデータセット向けに、Gen AI Evaluation Service には非同期の長時間実行バッチ評価方法が用意されています。これは、すぐに結果を必要とせず、計算をオフロードする場合に最適です。

batch_evaluate() メソッドは、ポーリングして進行状況を追跡できるオペレーション オブジェクトを返します。パラメータは evaluate() メソッドと互換性があります。

GCS_DEST_BUCKET = "gs://your-gcs-bucket/batch_eval_results/"

inference_result_saved = client.evals.run_inference(
    model="gemini-2.0-flash",
    src=prompts_df,
    config={'dest': GCS_DEST_BUCKET}
)
print(f"Eval dataset uploaded to: {inference_result_saved.gcs_source}")

batch_eval_job  = client.evals.batch_evaluate(
   dataset = inference_result_saved,
   metrics = [
        types.RubricMetric.TEXT_QUALITY,
        types.RubricMetric.INSTRUCTION_FOLLOWING,
        types.RubricMetric.FLUENCY,
        types.Metric(name='bleu'),
    ],
   dest=GCS_DEST_BUCKET
)

サードパーティ モデルの評価

Gen AI Evaluation Service を使用すると、モデル名の文字列を run_inference メソッドに渡すことで、OpenAI などのプロバイダのモデルを評価して比較できます。Gen AI Evaluation Service では、litellm ライブラリを使用してモデル API を呼び出します。

必要な API キーを環境変数(OPENAI_API_KEY など)として設定してください。

import os

# Set your third-party model API key
os.environ['OPENAI_API_KEY'] = 'YOUR_OPENAI_API_KEY'

# Run inference on an OpenAI model
gpt_response = client.evals.run_inference(
    model='gpt-4o',
    src=prompt_df
)

# You can now evaluate the responses
eval_result = client.evals.evaluate(
    dataset=gpt_response,
    metrics=[types.RubricMetric.TEXT_QUALITY]
)

eval_result.show()

次のステップ