# ADKの便利で実践的な使い方
🎭 固定プロンプトのテストだけでは、実際のユーザーの予測不可能な行動を再現できません。ADKのUser Simulation機能は、「せっかちな顧客」「曖昧な依頼者」といったペルソナ駆動の対話シミュレーションで、エージェントの堅牢性を自動検証します。
📌 タイトル:User Simulation
🔗 URL:
🧩 概要
ADKのUser Simulation機能は、AIが生成するユーザープロンプトを使って会話エージェントを動的に評価します。固定的なテストケースではなく、シミュレートされたユーザーがエージェントのレスポンスに適応的に応答するため、予測不可能な会話フローのテストに最適です。ConversationScenarioは`starting_prompt`(初期メッセージ)、`conversation_plan`(達成すべきゴールのガイドライン)、`user_persona`(ユーザー特性)の3要素で構成されます。
🛠 使い方
ユーザーシミュレーターの基本設定です。
```json
{
"user_simulator_config": {
"model": "gemini-flash-latest",
"model_configuration": {
"thinking_config": {
"include_thoughts": true,
"thinking_budget": 10240
}
},
"max_allowed_invocations": 20
}
}
```
ADKは3つのプリセットペルソナを提供しています。
| 振る舞い | EXPERT | NOVICE | EVALUATOR |
|----------|--------|--------|-----------|
| 情報提供 | 詳細志向 | ゴール志向 | 詳細志向 |
| 質問への回答 | 関連質問のみ | すべて回答 | 関連質問のみ |
| 不正確さの指摘 | する | しない | しない |
| エラー対処 | 1回試行 | しない | しない |
| トーン | プロフェッショナル | カジュアル | カジュアル |
カスタムペルソナをConversationScenarioのJSONで直接定義できます。
```json
{
"user_persona": {
"id": "IMPATIENT_USER",
"description": "急いでいて、すぐにイライラするユーザー",
"behaviors": [
{
"name": "Short responses",
"description": "簡潔で不完全な返答をする",
"behavior_instructions": [
"Keep responses under 10 words",
"Omit polite phrases"
],
"violation_rubrics": [
"Response exceeds 10 words",
"Response is overly polite"
]
}
]
}
}
```
評価シナリオの自動生成も可能です。
```bash
adk eval_set generate_eval_cases
\
--user_simulation_config_file=
```
🏗 実践的な使い方
**「せっかちな顧客」ペルソナでの堅牢性テスト**: IMPATIENT_USERペルソナを使い、10語以下の短い返答や丁寧な表現の省略をシミュレートします。エージェントが不十分な情報からでも適切にヒアリングし、タスクを完了できるかを検証できます。カスタマーサポートエージェントの品質向上に特に有効です。
**「曖昧な依頼者」ペルソナの活用**: 「具体的な要件を示さず、抽象的な表現で依頼するユーザー」をシミュレートします。エージェントが適切な質問で要件を明確化できるか、曖昧な入力で暴走しないかをテストできます。
**プリセットペルソナの使い分け**: EXPERTペルソナはエージェントの技術的正確性を検証し、NOVICEペルソナは初心者にも分かりやすい説明ができるかを検証します。EVALUATORペルソナは中立的な立場でエージェントのパフォーマンスを評価します。
**シナリオの自動生成による網羅性向上**: `generate_eval_cases`コマンドで多様な会話シナリオを自動生成し、手動では思いつかないエッジケースを発見できます。`generation_instruction`でシナリオの方向性を指定し、`environment_context`でバックエンドの状態を提供することで、より現実的なシナリオが生成されます。
💡 ユースケース
🎭 カスタマーサポートエージェントの多様なユーザータイプへの対応力検証
🧪 固定テストでは発見できない会話パスのエッジケース発見
🤖 新規ペルソナ定義によるドメイン特化の堅牢性テスト
📊 大量のシナリオ自動生成による網羅的な品質評価
⚠️ 注意点
- `max_allowed_invocations`を適切に設定しないと、シミュレーションが無限に続く可能性があります。デフォルト20からドメインに応じて調整してください。
- シナリオの自動生成にはVertex Gen AI Evaluation Service APIが必要です。
- カスタムペルソナの`violation_rubrics`が不明確だと、ペルソナの一貫性が保てない場合があります。具体的な違反条件を定義してください。
- シミュレーターのモデルにthinking機能を有効にすると、より自然な対話が生成されますが、コストが増加します。
✨ User Simulationは、固定テストの限界を突破する強力な機能です。ペルソナを活用して「実際のユーザーならどう振る舞うか」をシミュレートし、エージェントの堅牢性を多角的に検証しましょう!
#ADK# #AIAgent#