モデルベースの指標には、カスタマイズするためのさまざまなアプローチが用意されています。これにより、基準とユースケースに基づいて評価指標を生成できます。このページでは、理想的なユースケースに合わせて判定モデルを構成する方法について説明します。
基本的な評価ワークフローについては、Gen AI Evaluation Service のクイックスタートをご覧ください。高度な判定モデルのカスタマイズ シリーズは、次のページから構成されています。
- 判定モデルを評価する
 - プロンプトによる判定モデルのカスタマイズ
 - 判定モデルを構成する(現在のページ)
 
概要
品質を向上させるために、次のオプションを使用して判定モデルを構成できます。
- システム指示: 評価プロンプトを処理する前に、一連の指示を処理できます。
 - 判定モデルの構成:
- レスポンスのフリップ: ベースライン モデルと候補モデルのレスポンスをフリップさせて、評価中の判定モデルのバイアスを軽減します。
 - マルチサンプリング: 評価スコアの判定モデルを呼び出す回数を調整して、一貫性を高めます。
 - チューニング済み判定モデル: チューニング済み LLM を判定モデルとして使用します。
 
 
システム指示
Gemini モデルは、モデルがプロンプトを処理する方法に影響を与える一連の指示であるシステム指示を受け取ることができます。モデルからコンテンツを初期化または生成するときにシステム指示を使用すると、ロールやペルソナ、コンテキスト情報、説明のスタイルやトーンなどのプロダクト レベルの動作を指定できます。通常、判定モデルは入力プロンプトよりもシステム指示の重要度を高く評価します。
システム指示をサポートするモデルの一覧については、サポートされているモデルをご覧ください。
次の Vertex AI SDK の例では、PointwiseMetric の指標レベルで system_instruction を追加します。
system_instruction = "You are an expert evaluator."
linguistic_acceptability = PointwiseMetric(
    metric="linguistic_acceptability",
    metric_prompt_template=linguistic_acceptability_metric_prompt_template,
    system_instruction=system_instruction,
)
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[linguistic_acceptability]
).evaluate()
PairwiseMetric でも同じ方法を使用できます。
判定モデルの構成
autorater_config を使用して、判定モデルをさらにカスタマイズできます。
レスポンスのフリップ: ベースライン モデルと候補モデルのレスポンスをフリップさせて、評価中の判定モデルのバイアスを軽減します。
マルチサンプリング: 評価スコアの判定モデルを呼び出す回数を調整して、一貫性を高めます。
チューニング済み判定モデル: チューニング済み LLM を判定モデルとして使用します。
レスポンスのフリップ
PairwiseMetrics の場合、Gen AI Evaluation Service はベースライン モデルと候補モデルのレスポンスを受け取ります。判定モデルは、metric_prompt_template の基準により適合するレスポンスを評価します。ただし、特定の環境では、判定モデルがベースライン モデルまたは候補モデルに偏る可能性があります。
評価結果のバイアスを減らすには、レスポンスのフリップを有効にします。これにより、判定モデルへの呼び出しの半分で、Vertex AI SDK によりベースライン モデルと候補モデルのレスポンスがフリップされます。
from vertexai.preview.evaluation import AutoraterConfig
pairwise_relevance_prompt_template = """
    # Instruction
    …
    ### Response A
    {baseline_model_response}
    ### Response B
    {candidate_model_response}
"""
my_pairwise_metric = PairwiseMetric(
    metric="my_pairwise_metric",
    metric_prompt_template=pairwise_relevance_prompt_template,
    candidate_response_field_name = "candidate_model_response",
    baseline_response_field_name = "baseline_model_response"
)
# Define an AutoraterConfig with flip_enabled
my_autorater_config = AutoraterConfig(flip_enabled=True)
# Define an EvalTask with autorater_config
flip_enabled_eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[my_pairwise_metric],
    autorater_config=my_autorater_config,
).evaluate()
マルチサンプリング
評価を行う際、判定モデルのレスポンスにランダム性が現れることがあります。追加のサンプリングは、判定モデルの固有のランダム性を打ち消し、より一貫した結果につながる可能性があります。
ただし、サンプリングを増やすと、リクエストの完了までのレイテンシも増加します。AutoraterConfig を使用して、サンプリング数の値を 1~32 の整数に更新できます。ランダム性とレイテンシの 2 つの要素のバランスを取るために、デフォルトの sampling_count 値(4)を使用することをおすすめします。
Vertex AI SDK を使用して、リクエストごとに実行されるサンプル数を指定できます。
from vertexai.preview.evaluation import AutoraterConfig
# Define customized sampling count in AutoraterConfig
autorater_config = AutoraterConfig(sampling_count=6)
# Run evaluation with the sampling count.
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config
).evaluate()
チューニング済み判定モデル
評価ユースケースに適したチューニング データがある場合は、Vertex AI SDK を使用して Gemini モデルを判定モデルとしてチューニングし、チューニング済みモデルを評価に使用できます。AutoraterConfig を使用して、チューニングされたモデルを判定モデルとして指定できます。
from vertexai.preview.evaluation import {
   AutoraterConfig,
   PairwiseMetric,
   tune_autorater,
   evaluate_autorater,
}
# Tune a model to be the judge model. The tune_autorater helper function returns an AutoraterConfig with the judge model set as the tuned model.
autorater_config: AutoRaterConfig = tune_autorater(
    base_model="gemini-2.0-flash",
    train_dataset=f"{BUCKET_URI}/train/sft_train_samples.jsonl",
    validation_dataset=f"{BUCKET_URI}/val/sft_val_samples.jsonl",
    tuned_model_display_name=tuned_model_display_name,
)
# Alternatively, you can set up the judge model with an existing tuned model endpoint
autorater_config = AutoraterConfig(autorater_model=TUNED_MODEL)
# Use the tuned judge model
eval_result = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[METRICS],
    autorater_config=autorater_config,
).evaluate()