# ADK 2.0の便利だけど知られていない機能
🌍 標準メトリクスだけでは測れない、自社独自の評価基準でエージェントを採点できたら理想的だと思いませんか?
ADK 2.0のカスタム評価メトリクス機能は、Python関数として独自の評価ロジックを定義し、エージェントの品質を自由な基準で測定できる仕組みです。
📌 タイトル:カスタム評価メトリクス (Custom Metrics)
🔗 URL:
🧩 概要
カスタム評価メトリクスは、`EvaluationResult` を返すPython関数として定義します。関数には `eval_metric`(評価メトリクスの定義)、`actual_invocations`(実際のエージェントの応答)、`expected_invocations`(期待される応答)、`conversation_scenario`(会話シナリオ)がパラメータとして渡されます。非同期関数もサポートされており、外部サービスとの連携も可能です。
🛠 使い方
カスタムメトリクス関数を作成し、評価設定JSONに登録します。
```python
from google.adk.evaluation.eval_metrics import EvalStatus
from google.adk.evaluation.evaluator import EvaluationResult
async def response_length_metric(
eval_metric,
actual_invocations,
expected_invocations,
conversation_scenario
) -> EvaluationResult:
# 応答の長さが適切か評価
last_response = "".join(
part.text for part in actual_invocations[-1].final_response.parts
)
score = 1.0 if len(last_response) < 500 else 0.5
return EvaluationResult(
overall_score=score,
overall_eval_status=(
EvalStatus.PASSED
if score >= eval_metric.criterion.threshold
else EvalStatus.FAILED
),
)
```
評価設定JSONでは、`criteria`(閾値)と `custom_metrics` の `code_config.name`(関数のインポートパス)を指定して登録します。
```json
{
"criteria": {
"response_length": {"threshold": 0.8}
},
"custom_metrics": {
"response_length": {
"code_config": {"name": "my_metrics.response_length_metric"}
}
}
}
```
🏗 本番システムへの組み込み方
・ドメイン固有の品質基準(正確性、トーン、コンプライアンス等)をメトリクスとして実装する
・CI/CDパイプラインでカスタムメトリクスを自動実行し、品質閾値を下回った場合にデプロイをブロックする
・非同期メトリクスを活用して、外部の評価APIやLLM-as-a-Judgeと連携する
・複数のメトリクスを組み合わせて、エージェントの総合的な品質スコアを算出する
💡 ユースケース
📏 応答の簡潔さや情報密度を独自基準で評価する
🏢 業界規制やコンプライアンス要件への準拠を自動チェックする
🎯 特定のツール呼び出しパターンが期待通りか検証する
🗣 応答のトーンや丁寧さをLLM-as-a-Judgeで自動採点する
⚠️ 注意点
カスタムメトリクス関数内で重い処理を行う場合、評価全体の実行時間に影響します。非同期関数を活用し、必要に応じてタイムアウトを設定してください。また、`code_config` のモジュールパスは評価実行環境からインポート可能である必要があります。
✨ カスタム評価メトリクスにより、標準メトリクスではカバーしきれない独自の品質基準を体系的に運用できます。自社のユースケースに合わせた評価を構築しましょう。
#
ADK# #
AIAgent#