# ADK 2.0の便利だけど知られていない機能
🌍 エージェントの評価で「実際のユーザーとの会話」を再現できたら、テストの質が格段に上がると思いませんか?
ADK 2.0のユーザーシミュレーション機能は、多様なペルソナを持つ仮想ユーザーとの会話を動的に生成し、エージェントの応答品質を体系的に評価できる仕組みです。
📌 タイトル:ユーザーシミュレーション (User Simulation)
🔗 URL:
🧩 概要
ユーザーシミュレーションは、エージェント評価のために動的な会話プロンプトを自動生成する機能です。`ConversationScenario` を定義し、`starting_prompt`(会話の開始メッセージ)、`conversation_plan`(会話の進行計画)、`user_persona`(ユーザーの振る舞い)を指定することで、現実的な対話パターンを再現します。組み込みペルソナとして、EXPERT(詳細志向で誤りを指摘する)、NOVICE(指示を待つ受動的なユーザー)、EVALUATOR(詳細志向だが誤りの指摘はしない)の3種が用意されています。
🛠 使い方
CLIから `adk eval_set generate_eval_cases` コマンドで評価ケースを生成できます。カスタムペルソナを作成する場合は `UserPersona` クラスを使います。
```python
from google.adk.evaluation.conversation_scenarios import ConversationScenario
from google.adk.evaluation.simulation.user_simulator_personas import (
UserBehavior,
UserPersona,
)
# カスタムペルソナの定義
impatient_user = UserPersona(
id="IMPATIENT",
description="短い応答を好み、長い説明には不満を示す",
behaviors=[
UserBehavior(
name="Short responses",
description="短く、ときに不完全な応答をする",
behavior_instructions=["応答は10語以内にする", "丁寧な言い回しは省く"],
violation_rubrics=["応答が10語を超えている"],
)
],
)
# シナリオの定義
scenario = ConversationScenario(
starting_prompt="旅行の予約を手伝ってください",
conversation_plan="目的地→日程→予算の順に確認し、最終的に予約を完了する",
user_persona=impatient_user
)
```
🏗 本番システムへの組み込み方
・CI/CDパイプラインに評価シナリオを組み込み、エージェント更新時に自動でリグレッションテストを実行する
・EXPERT/NOVICE/EVALUATORの3ペルソナを使い分けて、異なるユーザー層での応答品質を網羅的に検証する
・`conversation_plan` を業務シナリオに合わせて設計し、実際の利用パターンに近い評価を行う
・カスタムペルソナを作成して、自社サービス特有のユーザー行動パターンをシミュレートする
💡 ユースケース
🧪 新しいプロンプトやモデルへの変更後に、会話品質のリグレッションを自動検出する
👥 初心者ユーザーと上級者ユーザーで異なる応答戦略が機能するか検証する
📊 複数シナリオを一括実行して、エージェントの弱点を体系的に洗い出す
🔄 会話の途中で話題が変わるケースや、曖昧な質問への対応力を評価する
⚠️ 注意点
シミュレーションはLLMベースで生成されるため、同一シナリオでも実行ごとに会話の展開が微妙に異なる場合があります。評価の再現性を確保するには、複数回実行して統計的に判断することをお勧めします。また、組み込みペルソナはそれぞれ異なる振る舞いをするため、評価目的に合ったペルソナを選択してください。
✨ ユーザーシミュレーションを活用することで、実ユーザーを巻き込まずにエージェントの対話品質を継続的に改善できます。多様なペルソナでの評価を習慣化しましょう。
#
ADK# #
AIAgent#