評価指標を管理する

始める前に

評価指標を管理する前に、次のことを確認してください。

  • Agent Platform API が有効になっている Google Cloud プロジェクト。
  • (省略可)Agent Platform SDK を使用している場合は、エージェントを評価するの説明に沿ってクライアントを初期化します。

指標レジストリを使用すると、エージェントの評価方法に関する再利用可能な構成を定義、保存、管理できます。テスト実行ごとに基準を構成する代わりに、安全性に関するカスタム LLM ベースのルーブリックや実行精度に関する Python 関数などの標準化された指標を保存し、オフライン評価と継続的なオンライン モニターの両方に一貫して適用できます。

指標タイプ

Agent Platform では、レジストリで次の 3 種類の指標がサポートされています。

  • 事前定義された指標: タスクの成功率、ツールの使用品質、軌跡のコンプライアンスに関するマルチターンの評価者など、Google が提供するマネージド指標。
  • カスタム LLM 指標: 「Judge LLM」が特定の基準と評価尺度に基づいてエージェントの回答を評価する自然言語ルーブリック。
  • カスタムコード指標: 特定の出力形式のチェックやツール レスポンスの検証など、エージェントの動作をプログラムで検証する Python 関数。

Google が提供するマネージド指標に加えて、カスタマイズされた登録済み指標を評価に使用できます。

事前定義された指標

Agent Platform には、エージェントの評価に使用できる事前定義された一連の指標が用意されています。これらの指標は Google によって管理され、単一ターンとマルチターンの両方のエージェント インタラクションの一般的な評価ディメンションをカバーしています。

SDK の事前定義された指標には、types.RubricMetric.METRIC_NAME を使用してアクセスできます。入力要件や出力形式など、ルーブリック ベースのマネージド指標の詳細については、ルーブリック ベースのマネージド指標の詳細をご覧ください。

単一ターンのエージェント指標

次の指標は、単一のエージェントのやり取り(1 つのプロンプトと 1 つのレスポンス。中間ツール呼び出しを含む可能性あり)を評価します。

指標 タイプ SDK アクセサ 説明
エージェントの最終レスポンスの品質 適応型ルーブリック types.RubricMetric.FINAL_RESPONSE_QUALITY エージェントの構成(システムの手順とツールの宣言)とユーザーのプロンプトに基づいて、ルーブリックの基準を自動的に生成する包括的な評価。
エージェントのハルシネーション 静的ルーブリック types.RubricMetric.HALLUCINATION 回答を原子単位の主張に分割し、各主張が中間イベントのツール使用状況に基づいていることを検証して、事実性をチェックします。
エージェント ツールの使用品質 適応型ルーブリック types.RubricMetric.TOOL_USE_QUALITY 適切なツールの選択、正しいパラメータの使用、指定された操作シーケンスの遵守を評価します。
安全性 静的ルーブリック types.RubricMetric.SAFETY 回答が、PII や人口統計データ、ヘイトスピーチ、危険なコンテンツ、ハラスメント、性的描写が露骨なコンテンツなど、安全に関するポリシーに違反していないかどうかを評価します。安全な場合は 1、安全でない場合は 0 を返します。

マルチターンのエージェントの指標

次の指標は、マルチターンのエージェントの会話を評価します。会話のコンテキスト全体を分析して、複数のターンにわたるエージェントの全体的なパフォーマンスを評価します。

指標 タイプ SDK アクセサ 説明
エージェントのマルチターンのタスク成功率 適応型ルーブリック types.RubricMetric.MULTI_TURN_TASK_SUCCESS エージェントが会話の目標を達成したかどうかを評価します。この参照なしの指標は、目標がどのように達成されたかではなく、目標が達成されたかどうかに焦点を当てています。
エージェントのマルチターン ツール使用の品質 適応型ルーブリック types.RubricMetric.MULTI_TURN_TOOL_USE_QUALITY マルチターンの会話中に実行された関数呼び出しの品質を評価します。エージェントが適切なツールを正しい引数で適切なタイミングで呼び出したかどうかを評価します。
エージェントのマルチターン軌跡の品質 適応型ルーブリック types.RubricMetric.MULTI_TURN_TRAJECTORY_QUALITY 会話の全体的な軌跡(パス)を評価します。タスクの成功とは異なり、この指標では、エージェントが目標を達成した方法(推論パスが論理的で効率的であったかどうか)を評価します。

SDK で事前定義された指標を使用する

from vertexai import evals, types

# Run an evaluation with predefined metrics
result = client.evals.evaluate(
    dataset=eval_dataset,
    metrics=[
        types.RubricMetric.FINAL_RESPONSE_QUALITY,
        types.RubricMetric.TOOL_USE_QUALITY,
        types.RubricMetric.HALLUCINATION,
        types.RubricMetric.SAFETY,
    ],
)

# Visualize results in Colab
result.show()

コンソールで指標を管理する

  1. Google Cloud コンソールで、[Agent Platform] > [エージェント] > [評価] ページに移動します。

    [評価] に移動

  2. [指標] タブをクリックして、レジストリを表示します。

  3. 指標を作成する: [新しい指標] をクリックし、[カスタム LLM 指標] または [カスタムコード指標] を選択します。

  4. ルーブリックを定義する: LLM 指標の場合は、[サンプル] ボタンを使用して、指示、基準(明瞭さ興奮度など)、評価スコアをすばやく入力します。

  5. 表示と編集: 指標名をクリックすると、その定義が読み取り専用モードで表示されます。また、その他のオプション アイコンを使用して、リソースを複製または削除できます。

SDK を使用して指標を管理する

Agent Platform SDK を使用して、指標をプログラムで登録して使用できます。

カスタム LLM 指標を登録する

from vertexai import evals, types

# Define a metric with a specific rubric
tone_check_metric = types.LLMMetric(
        name="tone_check",
        prompt_template="Analyze the tone of the response ...",
        result_parsing_function="""
          import json, re
          def parse_results(responses):
              response = json.loads(responses[0])
              return {"score": response.get("score", 0.0),
                      "explanation": response.get("explanation", "default explanation")}
          """
)

# Register the custom metric
tone_check_metric_path = client.evals.create_evaluation_metric(
    metric=tone_check_metric
)

カスタムコード指標を登録する

from vertexai import evals, types

# Define a metric with custom python code
accuracy_metric_code = """
def evaluate(instance: dict) -> float:
    agent_data = instance.get('agent_eval_data', {})
    turns = agent_data.get('turns', [])
    for turn in turns:
        ...
"""

accuracy_metric = types.CodeExecutionMetric(
    name="multi_turn_accuracy",
    custom_function=accuracy_metric_code
)

# Register the custom metric
accuracy_metric_path = client.evals.create_evaluation_metric(
    metric=accuracy_metric
)