生成 AI モデルを構築して評価したら、そのモデルを使用して、チャットボットなどのエージェントを構築できます。Gen AI Evaluation Service を使用すると、ユースケースのタスクと目標を完了するエージェントの能力を測定できます。
概要
エージェントを評価する方法は次のとおりです。
最終的な回答の評価: エージェントの最終的な出力(エージェントが目標を達成したかどうか)を評価します。
軌跡評価: エージェントが最終的な回答に到達するためにたどったパス(ツール呼び出しの順序)を評価します。
Gen AI 評価サービスを使用すると、エージェントの実行をトリガーし、1 つの Vertex AI SDK クエリで軌道評価と最終レスポンス評価の両方の指標を取得できます。
サポートされているエージェント
Gen AI Evaluation Service は、次のカテゴリのエージェントをサポートしています。
サポートされているエージェント | 説明 |
---|---|
Reasoning Engine のテンプレートで構築されたエージェント | Reasoning Engine(Vertex AI の LangChain)は、エージェントをデプロイして管理できる Google Cloud プラットフォームです。 |
Reasoning Engine のカスタマイズ可能なテンプレートを使用して構築された LangChain エージェント | LangChain はオープンソース プラットフォームです。 |
カスタム エージェント関数 | カスタム エージェント関数は、エージェントのプロンプトを受け取り、レスポンスと軌跡を辞書で返す柔軟な関数です。 |
エージェントの評価の指標を定義する
最終的なレスポンスまたは軌道の評価のための指標を定義します。
最終回答の評価
最終レスポンスの評価は、モデルレスポンスの評価と同じプロセスで行われます。詳細については、評価指標を定義するをご覧ください。
軌道評価
次の指標は、想定される軌道に沿って移動するモデルの能力を評価する際に役立ちます。
完全一致
予測された軌跡が参照軌跡と完全に一致し、ツール呼び出しがまったく同じ順序で行われた場合、trajectory_exact_match
指標はスコア 1 を返します。それ以外の場合は 0 を返します。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
reference_trajectory |
エージェントがクエリを満たすために使用するツールの想定。 |
出力スコア
値 | 説明 |
---|---|
0 | 予測された軌跡が参照と一致しません。 |
1 | 予測された軌跡が参照と一致しています。 |
順序一致
予測された軌跡に、参照軌跡のすべてのツール呼び出しが同じ順序で含まれていて、追加のツール呼び出しが含まれている場合、trajectory_in_order_match
指標はスコア 1 を返します。それ以外の場合は 0 を返します。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的なレスポンスに到達するために使用する予測された軌道。 |
reference_trajectory |
エージェントがクエリを満たすために予測される軌道。 |
出力スコア
値 | 説明 |
---|---|
0 | 予測された軌道のツール呼び出しが、参照軌道の順序と一致していません。 |
1 | 予測された軌道が参照と一致している。 |
順序を問わない一致
予測された軌道に参照軌道のすべてのツール呼び出しが含まれているが、順序は重要ではなく、追加のツール呼び出しが含まれている場合、trajectory_any_order_match
指標はスコア 1 を返します。それ以外の場合は 0 を返します。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
reference_trajectory |
エージェントがクエリを満たすために使用するツールの想定。 |
出力スコア
値 | 説明 |
---|---|
0 | 予測された軌道に、参照軌道のすべてのツール呼び出しが含まれていない。 |
1 | 予測された軌道が参照と一致している。 |
適合率
trajectory_precision
指標は、予測された軌道内のツール呼び出しのうち、参照軌道に従って実際に関連性があるか正しい呼び出しの数を測定します。
精度は、予測された軌道内のアクションのうち、参照軌道にも含まれるアクションの数をカウントして計算します。その数を、予測された軌道内のアクションの合計数で割ります。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
reference_trajectory |
エージェントがクエリを満たすために使用するツールの想定。 |
出力スコア
値 | 説明 |
---|---|
[0,1] の範囲内の浮動小数点数 | スコアが高いほど、予測される軌道は正確になります。 |
リコール
trajectory_recall
指標は、参照軌道の重要なツール呼び出しのうち、予測された軌道で実際にキャプチャされた呼び出しの数を測定します。
再現率は、参照軌道内のアクションのうち、予測軌道にも含まれるアクションの数をカウントして計算されます。その数値を参照軌道内のアクションの合計数で割ります。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
reference_trajectory |
エージェントがクエリを満たすために使用するツールの想定。 |
出力スコア
値 | 説明 |
---|---|
[0,1] の範囲内の浮動小数点数 | スコアが高いほど、予測された軌道の再現率が高くなります。 |
単一ツールの使用
trajectory_single_tool_use
指標は、指標仕様で指定された特定のツールが予測された軌跡で使用されているかどうかを確認します。ツールの呼び出し順序やツールの使用回数はチェックされず、ツールが存在するかどうかのみがチェックされます。
指標の入力パラメータ
入力パラメータ | 説明 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
出力スコア
値 | 説明 |
---|---|
0 | ツールがない |
1 | ツールが存在する。 |
また、デフォルトでは、次の 2 つのエージェント パフォーマンス指標が評価結果に追加されます。EvalTask
で指定する必要はありません。
latency
エージェントがレスポンスを返すまでにかかった時間。
値 | 説明 |
---|---|
浮動小数点数 | 秒単位で計算されます。 |
failure
エージェントの呼び出しがエラーになったか成功したかを示すブール値。
出力スコア
値 | 説明 |
---|---|
1 | エラー |
0 | 有効なレスポンスが返された |
エージェントの評価用のデータセットを準備する
最終的なレスポンスまたは軌道評価用にデータセットを準備します。
最終レスポンス評価のデータスキーマは、モデルレスポンス評価のスキーマと類似しています。
計算ベースの軌道評価では、データセットに次の情報が含まれている必要があります。
入力タイプ | 入力フィールドの内容 |
---|---|
predicted_trajectory |
エージェントが最終的な回答に到達するために使用したツール呼び出しのリスト。 |
reference_trajectory (trajectory_single_tool_use metric には不要) |
エージェントがクエリに対応するために使用するツール。 |
評価データセットの例
次の例は、軌道評価用のデータセットを示しています。trajectory_single_tool_use
を除くすべての指標で reference_trajectory
が必要です。
reference_trajectory = [
# example 1
[
{
"tool_name": "set_device_info",
"tool_input": {
"device_id": "device_2",
"updates": {
"status": "OFF"
}
}
}
],
# example 2
[
{
"tool_name": "get_user_preferences",
"tool_input": {
"user_id": "user_y"
}
},
{
"tool_name": "set_temperature",
"tool_input": {
"location": "Living Room",
"temperature": 23
}
},
]
]
predicted_trajectory = [
# example 1
[
{
"tool_name": "set_device_info",
"tool_input": {
"device_id": "device_3",
"updates": {
"status": "OFF"
}
}
}
],
# example 2
[
{
"tool_name": "get_user_preferences",
"tool_input": {
"user_id": "user_z"
}
},
{
"tool_name": "set_temperature",
"tool_input": {
"location": "Living Room",
"temperature": 23
}
},
]
]
eval_dataset = pd.DataFrame({
"predicted_trajectory": predicted_trajectory,
"reference_trajectory": reference_trajectory,
})
評価データセットをインポートする
データセットは次の形式でインポートできます。
Cloud Storage に保存されている JSONL または CSV ファイル
BigQuery テーブル
Pandas DataFrame
次のコードは、Cloud Storage バケットからサンプル データセットをインポートする方法を示しています。
# dataset name to be imported
dataset = "on-device" # customer-support, content-creation
# copy the tools and dataset file
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/tools.py .
!gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/{dataset}/eval_dataset.json .
# load the dataset examples
import json
eval_dataset = json.loads(open('eval_dataset.json').read())
# run the tools file
%run -i tools.py
エージェントの評価を実行する
トラジェクトリの評価または最終的なレスポンス評価を実行します。
エージェントの評価では、次のコードのように、レスポンス評価指標と軌道評価指標を組み合わせることができます。
single_tool_use_metric = TrajectorySingleToolUse(tool_name='tool_name')
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[
"rouge_l_sum",
"bleu",
custom_response_eval_metric,
"trajectory_exact_match",
"trajectory_precision",
single_tool_use_metric
pointwise_trajectory_eval_metric # llm-based metric
],
)
eval_result = eval_task.evaluate(
runnable=RUNNABLE,
)
指標のカスタマイズ
テンプレート インターフェースを使用するか、最初から作成して、大規模言語モデルベースの指標をカスタマイズし、軌道評価に使用できます。トラジェクトリの評価にカスタムの計算ベースの指標を定義することもできます。
結果を表示して解釈する
軌道評価または最終レスポンス評価の場合、評価結果は次のように表示されます。
評価結果には次の情報が含まれます。
最終回答の指標
インスタンス レベルの結果
列 | 説明 |
---|---|
レスポンス | エージェントが生成した最終的なレスポンス。 |
latency_in_seconds | レスポンスの生成に要した時間。 |
失敗 | 有効なレスポンスが生成されたかどうかを示します。 |
スコア | 指標仕様で指定されたレスポンスに対して計算されたスコア。 |
explanation | 指標仕様で指定されたスコアの説明。 |
集計結果
列 | 説明 |
---|---|
平均 | すべてのインスタンスの平均スコア。 |
standard deviation | すべてのスコアの標準偏差。 |
軌跡の指標
インスタンス レベルの結果
列 | 説明 |
---|---|
predicted_trajectory | 最終的な回答に至るまでのツール呼び出しとエージェント対応の順序。 |
reference_trajectory | 想定されるツール呼び出しの順序。 |
スコア | 予測された軌跡と指標仕様で指定された参照軌跡に対して計算されるスコア。 |
latency_in_seconds | レスポンスの生成に要した時間。 |
失敗 | 有効なレスポンスが生成されたかどうかを示します。 |
集計結果
列 | 説明 |
---|---|
平均 | すべてのインスタンスの平均スコア。 |
standard deviation | すべてのスコアの標準偏差。 |
次のステップ
次のエージェント評価ノートブックを試す。