コンテンツにスキップ

評価基準

ADKでサポートPython

このページでは、ツール使用の軌跡、応答の品質、安全性など、エージェントのパフォーマンスを評価するためにADKが提供する評価基準について概説します。

基準 説明 参照ベース ルーブリックが必要 LLM-as-a-Judge ユーザーシミュレーションをサポート
tool_trajectory_avg_score ツール呼び出しの軌跡の完全一致 はい いいえ いいえ いいえ
response_match_score 参照応答とのROUGE-1類似度 はい いいえ いいえ いいえ
final_response_match_v2 参照応答とのLLM判定による意味的一致 はい いいえ はい いいえ
rubric_based_final_response_quality_v1 カスタムルーブリックに基づくLLM判定による最終応答品質 いいえ はい はい いいえ
rubric_based_tool_use_quality_v1 カスタムルーブリックに基づくLLM判定によるツール使用品質 いいえ はい はい いいえ
hallucinations_v1 コンテキストに対するエージェント応答のLLM判定によるグラウンディング いいえ いいえ はい はい
safety_v1 エージェント応答の安全性/無害性 いいえ いいえ はい はい

tool_trajectory_avg_score

この基準は、エージェントによって呼び出されたツールシーケンスを期待される呼び出しのリストと比較し、EXACTIN_ORDER、またはANY_ORDERのいずれかの一致タイプに基づいて平均スコアを計算します。

この基準を使用するタイミング

この基準は、エージェントの正しさがツールの呼び出しに依存するシナリオに最適です。ツールの呼び出しをどの程度厳密に従う必要があるかに応じて、EXACTIN_ORDERANY_ORDERの3つの一致タイプから選択できます。

このメトリックは、特に次の点で価値があります。

  • 回帰テスト: エージェントの更新が、確立されたテストケースのツール呼び出し動作を意図せず変更しないことを保証します。
  • ワークフローの検証: エージェントが、特定の順序で特定のAPI呼び出しを必要とする事前定義されたワークフローに正しく従っていることを確認します。
  • 高精度タスク: ツールパラメータまたは呼び出し順序のわずかな逸脱が、大幅に異なるまたは誤った結果につながる可能性があるタスクを評価します。

特定のツール実行パスを強制し、ツール名、引数、または順序の逸脱を失敗と見なす必要がある場合は、EXACT一致を使用します。

特定の主要なツール呼び出しが特定の順序で発生することを確認したいが、その間に他のツール呼び出しが発生することを許可する場合は、IN_ORDER一致を使用します。このオプションは、特定の主要なアクションまたはツール呼び出しが特定の順序で発生することを確認し、他のツール呼び出しも発生する余地を残す場合に役立ちます。

特定の主要なツール呼び出しが発生することを確認したいが、その順序は気にせず、その間に他のツール呼び出しが発生することを許可する場合は、ANY_ORDER一致を使用します。この基準は、エージェントが5つの検索クエリを発行するなど、同じ概念に関する複数のツール呼び出しが発生する場合に役立ちます。検索クエリが発行される順序は気にせず、発生するまで気にしません。

詳細

評価対象の各呼び出しについて、この基準は、エージェントによって生成されたツール呼び出しのリストを、3つの一致タイプのいずれかを使用して期待されるツール呼び出しのリストと比較します。選択した一致タイプに基づいてツール呼び出しが一致する場合、その呼び出しには1.0のスコアが与えられ、それ以外の場合はスコアは0.0になります。最終的な値は、評価ケースのすべての呼び出しにわたるこれらのスコアの平均です。

比較は、次の一致タイプのいずれかを使用して実行できます。

  • EXACT:追加または欠落しているツール呼び出しなしで、実際と期待されるツール呼び出しの間に完全な一致が必要です。
  • IN_ORDER:期待されるリストのすべてのツール呼び出しが、同じ順序で実際のリストに存在する必要がありますが、その間に他のツール呼び出しが表示される場合があります。
  • ANY_ORDER:期待されるリストのすべてのツール呼び出しが、任意の順序で実際のリストに存在する必要があり、その間に他のツール呼び出しが表示される場合があります。

この基準の使用方法

デフォルトでは、tool_trajectory_avg_scoreEXACT一致タイプを使用します。EvalConfigcriteria辞書で、EXACT一致タイプのこの基準のしきい値のみを指定できます。値は0.0から1.0の間の浮動小数点数である必要があり、評価ケースが合格するための最小許容スコアを表します。すべての呼び出しでツール軌跡が完全に一致すると予想される場合は、しきい値を1.0に設定する必要があります。

EXACT一致のEvalConfigエントリの例:

{
  "criteria": {
    "tool_trajectory_avg_score": 1.0
  }
}

または、match_typeを明示的に指定することもできます。

{
  "criteria": {
    "tool_trajectory_avg_score": {
      "threshold": 1.0,
      "match_type": "EXACT"
    }
  }
}

IN_ORDERまたはANY_ORDER一致タイプを使用する場合は、しきい値とともにmatch_typeフィールドを介して指定できます。

IN_ORDER一致のEvalConfigエントリの例:

{
  "criteria": {
    "tool_trajectory_avg_score": {
      "threshold": 1.0,
      "match_type": "IN_ORDER"
    }
  }
}

ANY_ORDER一致のEvalConfigエントリの例:

{
  "criteria": {
    "tool_trajectory_avg_score": {
      "threshold": 1.0,
      "match_type": "ANY_ORDER"
    }
  }
}

出力と解釈方法

出力は0.0から1.0の間のスコアであり、1.0はすべての呼び出しで実際と期待されるツール軌跡の間に完全な一致があることを示し、0.0はすべての呼び出しで完全な不一致があることを示します。スコアが高いほど優れています。1.0未満のスコアは、少なくとも1つの呼び出しで、エージェントのツール呼び出し軌跡が期待されるものから逸脱したことを意味します。

response_match_score

この基準は、エージェントの最終応答がRouge-1を使用してゴールデン/期待される最終応答と一致するかどうかを評価します。

この基準を使用するタイミング

エージェントの出力がコンテンツの重複の観点から期待される出力とどの程度密接に一致するかを定量的に測定する必要がある場合は、この基準を使用します。

詳細

ROUGE-1は、システム生成テキスト(候補要約)と参照テキスト間のユニグラム(単一単語)の重複を具体的に測定します。基本的には、参照テキストの個々の単語が候補テキストにいくつ存在するかをチェックします。詳細については、ROUGE-1の詳細を参照してください。

この基準の使用方法

EvalConfigcriteria辞書で、この基準のしきい値を指定できます。値は0.0から1.0の間の浮動小数点数である必要があり、評価ケースが合格するための最小許容スコアを表します。

EvalConfigエントリの例:

{
  "criteria": {
    "response_match_score": 0.8
  }
}

出力と解釈方法

この基準の値の範囲は[0,1]であり、1に近い値ほど望ましいです。

final_response_match_v2

この基準は、エージェントの最終応答がLLMを審査員として使用してゴールデン/期待される最終応答と一致するかどうかを評価します。

この基準を使用するタイミング

エージェントの最終応答の正しさを参照に対して評価する必要があるが、回答の提示方法に柔軟性が必要な場合は、この基準を使用します。中心的な意味と情報が参照と一致する限り、異なる表現や形式が許容される場合に適しています。この基準は、意味的同等性が正確な字句の重複よりも重要である質問応答、要約、またはその他の生成タスクを評価するための良い選択であり、response_match_scoreよりも洗練された代替手段です。

詳細

この基準は、大規模言語モデル(LLM)を審査員として使用して、エージェントの最終応答が提供された参照応答と意味的に同等であるかどうかを判断します。エージェントの応答に正しい情報が含まれているかどうかに焦点を当て、書式、表現、または追加の正しい詳細の包含の違いを許容するため、字句一致メトリック(response_match_scoreなど)よりも柔軟に設計されています。

各呼び出しについて、この基準は審査員LLMに、参照と比較してエージェントの応答を「有効」または「無効」として評価するように促します。これは、堅牢性のために複数回繰り返され(num_samplesを介して構成可能)、多数決によって呼び出しが1.0(有効)または0.0(無効)のスコアを受け取るかどうかが決まります。最終的な基準スコアは、評価ケース全体で有効と見なされた呼び出しの割合です。

この基準の使用方法

この基準はLlmAsAJudgeCriterionを使用し、評価のしきい値、審査員モデル、および呼び出しごとのサンプル数を構成できます。

EvalConfigエントリの例:

{
  "criteria": {
    "final_response_match_v2": {
      "threshold": 0.8,
      "judge_model_options": {
            "judge_model": "gemini-1.5-flash",
            "num_samples": 5
          }
        }
    }
  }
}

出力と解釈方法

この基準は0.0から1.0の間のスコアを返します。1.0のスコアは、LLM審査員がすべての呼び出しでエージェントの最終応答を有効と見なしたことを意味し、0.0に近いスコアは、多くの応答が参照応答と比較して無効と判断されたことを示します。値が高いほど優れています。

rubric_based_final_response_quality_v1

この基準は、LLMを審査員として使用して、ユーザー定義のルーブリックセットに対してエージェントの最終応答の品質を評価します。

この基準を使用するタイミング

単純な正しさや参照との意味的同等性を超える応答品質の側面を評価する必要がある場合は、この基準を使用します。トーン、スタイル、有用性、またはルーブリックで定義された特定の会話ガイドラインへの準拠など、微妙な属性を評価するのに最適です。この基準は、単一の参照応答が存在しない場合、または品質が複数の主観的な要因に依存する場合に特に役立ちます。

詳細

この基準は、ルーブリックとして定義した特定の基準に基づいて応答品質を評価するための柔軟な方法を提供します。たとえば、応答が簡潔であるかどうか、ユーザーの意図を正しく推測しているかどうか、または専門用語を避けているかどうかを確認するルーブリックを定義できます。

この基準は、LLM-as-a-judgeを使用して、各ルーブリックに対してエージェントの最終応答を評価し、それぞれにyes(1.0)またはno(0.0)の判定を生成します。他のLLMベースのメトリックと同様に、呼び出しごとに審査員モデルを複数回サンプリングし、多数決を使用してその呼び出しの各ルーブリックのスコアを決定します。呼び出しの全体的なスコアは、そのルーブリックスコアの平均です。評価ケースの最終的な基準スコアは、すべての呼び出しにわたるこれらの全体的なスコアの平均です。

この基準の使用方法

この基準はRubricsBasedCriterionを使用し、EvalConfigでルーブリックのリストを提供する必要があります。各ルーブリックは、一意のIDとその内容で定義する必要があります。

EvalConfigエントリの例:

{
  "criteria": {
    "rubric_based_final_response_quality_v1": {
      "threshold": 0.8,
      "judge_model_options": {
        "judge_model": "gemini-1.5-flash",
        "num_samples": 5
      },
      "rubrics": [
        {
          "rubric_id": "conciseness",
          "rubric_content": {
            "text_property": "エージェントの応答は直接的で要点を突いています。"
          }
        },
        {
          "rubric_id": "intent_inference",
          "rubric_content": {
            "text_property": "エージェントの応答は、あいまいなクエリからユーザーの根本的な目標を正確に推測します。"
          }
        }
      ]
    }
  }
}

出力と解釈方法

この基準は0.0から1.0の間の全体的なスコアを出力し、1.0はエージェントの応答がすべての呼び出しですべてのルーブリックを満たしたことを示し、0.0はどのルーブリックも満たされなかったことを示します。結果には、各呼び出しの詳細なルーブリックごとのスコアも含まれます。値が高いほど優れています。

rubric_based_tool_use_quality_v1

この基準は、LLMを審査員として使用して、ユーザー定義のルーブリックセットに対してエージェントのツール使用品質を評価します。

この基準を使用するタイミング

最終的な応答が正しいかどうかだけでなく、エージェントがツールをどのように使用するかを評価する必要がある場合は、この基準を使用します。エージェントが正しいツールを選択したか、正しいパラメータを使用したか、または特定の順序でツール呼び出しに従ったかを評価するのに最適です。これは、エージェントの推論プロセスを検証し、ツール使用エラーをデバッグし、特に複数のツール使用パスが同様の最終回答につながる可能性があるが、1つのパスのみが正しいと見なされる場合に、規定のワークフローへの準拠を保証するのに役立ちます。

詳細

この基準は、ルーブリックとして定義した特定のルールに基づいてツール使用を評価するための柔軟な方法を提供します。たとえば、特定のツールが呼び出されたかどうか、そのパラメータが正しいかどうか、またはツールが特定の順序で呼び出されたかどうかを確認するルーブリックを定義できます。

この基準は、LLM-as-a-judgeを使用して、各ルーブリックに対してエージェントのツール呼び出しと応答を評価し、それぞれにyes(1.0)またはno(0.0)の判定を生成します。他のLLMベースのメトリックと同様に、呼び出しごとに審査員モデルを複数回サンプリングし、多数決を使用してその呼び出しの各ルーブリックのスコアを決定します。呼び出しの全体的なスコアは、そのルーブリックスコアの平均です。評価ケースの最終的な基準スコアは、すべての呼び出しにわたるこれらの全体的なスコアの平均です。

この基準の使用方法

この基準はRubricsBasedCriterionを使用し、EvalConfigでルーブリックのリストを提供する必要があります。各ルーブリックは、一意のIDとその内容で定義し、評価するツール使用の特定の側面を記述する必要があります。

EvalConfigエントリの例:

{
  "criteria": {
    "rubric_based_tool_use_quality_v1": {
      "threshold": 1.0,
      "judge_model_options": {
        "judge_model": "gemini-1.5-flash",
        "num_samples": 5
      },
      "rubrics": [
        {
          "rubric_id": "geocoding_called",
          "rubric_content": {
            "text_property": "エージェントは、GetWeatherツールを呼び出す前にGeoCodingツールを呼び出します。"
          }
        },
        {
          "rubric_id": "getweather_called",
          "rubric_content": {
            "text_property": "エージェントは、ユーザーの場所から派生した座標でGetWeatherツールを呼び出します。"
          }
        }
      ]
    }
  }
}

出力と解釈方法

この基準は0.0から1.0の間の全体的なスコアを出力し、1.0はエージェントのツール使用がすべての呼び出しですべてのルーブリックを満たしたことを示し、0.0はどのルーブリックも満たされなかったことを示します。結果には、各呼び出しの詳細なルーブリックごとのスコアも含まれます。値が高いほど優れています。

hallucinations_v1

この基準は、モデルの応答に虚偽、矛盾、または裏付けのない主張が含まれているかどうかを評価します。

この基準を使用するタイミング

エージェントの応答が提供されたコンテキスト(ツールの出力、ユーザーのクエリ、指示など)に基づいており、幻覚が含まれていないことを確認するには、この基準を使用します。

詳細

この基準は、開発者の指示、ユーザーのプロンプト、ツールの定義、ツールの呼び出しとその結果を含むコンテキストに基づいて、モデルの応答に虚偽、矛盾、または裏付けのない主張が含まれているかどうかを評価します。LLM-as-a-judgeを使用し、2段階のプロセスに従います。

  1. セグメンター:エージェントの応答を個々の文に分割します。
  2. 文検証ツール:グラウンディングのために提供されたコンテキストに対して、分割された各文を評価します。各文には、supportedunsupportedcontradictorydisputed、またはnot_applicableのラベルが付けられます。

メトリックは、精度スコアを計算します。supportedまたはnot_applicableである文の割合です。デフォルトでは、最終応答のみが評価されます。基準でevaluate_intermediate_nl_responsesがtrueに設定されている場合、エージェントからの中間自然言語応答も評価されます。

この基準の使用方法

この基準はHallucinationsCriterionを使用し、評価のしきい値、審査員モデル、呼び出しごとのサンプル数、および中間自然言語応答を評価するかどうかを構成できます。

EvalConfigエントリの例:

{
  "criteria": {
    "hallucinations_v1": {
      "threshold": 0.8,
      "judge_model_options": {
            "judge_model": "gemini-1.5-flash",
          },
      "evaluate_intermediate_nl_responses": true
    }
  }
}

出力と解釈方法

この基準は0.0から1.0の間のスコアを返します。1.0のスコアは、エージェントの応答のすべての文がコンテキストに基づいていることを意味し、0.0に近いスコアは、多くの文が虚偽、矛盾、または裏付けのないものであることを示します。値が高いほど優れています。

safety_v1

この基準は、エージェントの応答の安全性(無害性)を評価します。

この基準を使用するタイミング

エージェントの応答が安全ガイドラインに準拠し、有害または不適切なコンテンツを生成しないことを確認する必要がある場合は、この基準を使用する必要があります。ユーザー向けのアプリケーションや、応答の安全性が優先されるシステムには不可欠です。

詳細

この基準は、エージェントの応答に、ヘイトスピーチ、ハラスメント、危険な情報などの有害なコンテンツが含まれているかどうかを評価します。ADK内でネイティブに実装されている他のメトリックとは異なり、safety_v1は評価をVertex AI General AI Eval SDKに委任します。

この基準の使用方法

この基準を使用するには、Google Cloudプロジェクトが必要です。Vertex AI SDKが正しく機能するには、通常、エージェントのディレクトリの.envファイルにGOOGLE_CLOUD_PROJECTおよびGOOGLE_CLOUD_LOCATION環境変数を設定する必要があります。

EvalConfigcriteria辞書で、この基準のしきい値を指定できます。値は0.0から1.0の間の浮動小数点数である必要があり、応答が合格と見なされるための最小安全スコアを表します。

EvalConfigエントリの例:

{
  "criteria": {
    "safety_v1": 0.8
  }
}

出力と解釈方法

この基準は0.0から1.0の間のスコアを返します。1.0に近いスコアは応答が安全であることを示し、0.0に近いスコアは潜在的な安全性の問題を示します。