[開発者向け]GoogleがADKにUser Simulation機能を発表:AIエージェントのマルチターンテストを自動化

目次

はじめに

 Google Cloudが2025年11月7日、Agent Development Kit(ADK)の評価フレームワークに「User Simulation」機能を追加したと発表しました。本稿では、この新機能の仕組みと、AIエージェントのテスト作成にどのような変化をもたらすかを解説します。

参考記事

要点

  • User Simulationは、LLMを活用してユーザー側の対話を動的に生成するツールである
  • ConversationScenarioで高レベルな目標を定義すれば、具体的なやり取りは自動生成される
  • EvalConfigファイルで使用モデル、最大ターン数、ペルソナなどを細かく制御できる
  • 従来のターンごとの入出力ペアを手動で作成する方式と比べ、テスト作成・維持コストが大幅に削減される
  • エージェントの会話スタイルや内部ロジックの変更に対して、テストの耐性が向上する

詳細解説

User Simulationとは何か

 Googleによれば、User SimulatorはLLMを活用したユーザープロンプト生成ツールです。ADKの評価フレームワークに統合されており、ローカル環境で実行できます。開発者が高レベルな目標を与えると、その目標を達成するための会話をシミュレーターが動的に生成します。

 従来のAIエージェントテストでは、開発者が「ユーザーの入力」と「期待される出力」のペアを手動で大量に作成していました。この方式は脆弱で、エージェントの挙動にわずかな変更があるだけでテストが破綻し、保守作業が大きな負担となっていました。AIエージェントが対話型である以上、ユーザーはフォローアップの質問をしたり、前の依頼を修正したり、追加情報を提供したりします。こうした複雑なやり取りを固定的なスクリプトで網羅することは、現実的とは言えません。

ConversationScenarioによる目標定義

 User Simulationでは、厳密なターンごとのスクリプトではなく、ConversationScenarioという形式で会話の目標を定義します。これはシンプルなJSONオブジェクトで、以下の2つの要素から構成されます。

  1. starting_prompt: 会話を開始するための固定的な初期プロンプト
  2. conversation_plan: シミュレーターの目的を自然言語で記述したガイドライン

 Googleが公開したサンプルでは、サイコロを振る機能と素数判定機能を持つエージェントに対するテストケースが示されています。たとえば、「20面体のサイコロを振らせて、その結果が素数かどうかをチェックさせる」という目標を設定すれば、シミュレーターはその目標を達成するまでエージェントとの対話を続けます。

 重要なのは、conversation_planが「一連の目標」を定義するだけで、ユーザーの具体的なプロンプトやエージェントの正確な応答を指定しないという点です。サイコロの結果を得て、その後に素数チェックを実行するという成果さえ得られればよく、会話の細かいニュアンスには依存しません。この柔軟性により、エージェントの会話スタイルや内部ロジックに軽微な変更があっても、テストが壊れにくくなります。

EvalConfigによる細かい制御

 開発者はEvalConfigファイルを通じて、シミュレーターの挙動を詳細に調整できます。設定可能な主なパラメータは以下の通りです。

  • Model: シミュレーターの基盤となるモデルの指定(例: gemini-2.5-flash)
  • Model Configuration: モデルのオプション設定(thinking behavior など)
  • Turn Budget: 無限ループを防ぐための最大ターン数(max_allowed_invocations)
  • Custom Behavior: デフォルトのシステムプロンプトを上書きして、シミュレーターのペルソナを変更可能

 たとえば、「混乱しているユーザー」や「要求が厳しいユーザー」など、異なるタイプのユーザーに対してエージェントがどう対応するかをテストできます。Googleは近い将来、EvalConfig経由でペルソナ設定をサポートする予定としています。

 また、評価基準も柔軟に設定でき、たとえば「hallucinations_v1」という基準を使って、エージェントの応答が幻覚(事実と異なる情報の生成)を含んでいないかをチェックできます。閾値を設定し、スコアがそれを上回れば合格とみなす仕組みです。

実行と評価結果の確認

 シナリオと設定ファイルを用意したら、評価を実行して対話の詳細な内訳を取得できます。Googleが示した実行例では、各ターンのプロンプト、エージェントの応答、評価スコアが表形式で出力されています。

 評価指標として「hallucinations_v1」が使われ、各応答がスコア1.0(完全に正確)を記録し、全体として合格(PASSED)の判定が下されています。このように、シミュレーションの各ステップが可視化されるため、エージェントがどこで期待通りに振る舞い、どこで問題が発生したかを明確に把握できます。

開発者にとっての意義

 Googleはこの初回リリースについて、マルチターンテストの作成・保守の負担を軽減することに焦点を置いたと説明しています。具体的には、以下の3つの効果が期待されます。

  1. テスト作成時間の大幅な削減: 複雑なターンごとのスクリプトを書く代わりに、シンプルで高レベルな目標を定義するだけで済みます
  2. テストの堅牢性向上: 実装の細部ではなく「意図の達成」に焦点を当てるため、プロンプトをリファクタリングしてもテストが壊れにくくなります
  3. 信頼性の高いリグレッションテストスイートの構築: 幅広いテストケースを迅速に生成できるため、本番環境に移行する前に問題を検出するセーフティネットを構築できます

 目標志向のシミュレーションは、信頼性の高いAIエージェントを構築するための基本的な能力であり、今回の機能はGoogleが描く包括的なシミュレーション機能の最初のステップと位置づけられています。

技術的な背景と今後の展望

 AIエージェントのテストにおいて、静的なテストスクリプトは限界があります。エージェントが学習や改良を重ねるたびに、応答の表現が変わったり、内部処理の順序が変わったりすることは珍しくありません。そのたびにテストケースを書き直すのは非効率的です。

 User Simulationは、この問題を「目標」と「プロセス」を分離することで解決しようとしています。開発者は「何を達成すべきか」を定義し、「どのように達成するか」はシミュレーターとエージェントに任せるという発想です。これにより、テストの可読性が向上し、保守コストも削減されます。

 また、この機能はローカル環境で動作するため、開発の「内側のループ」を高速化できます。外部サービスへのリクエストやネットワークのレイテンシを気にすることなく、素早くイテレーションを回せる点は、開発効率の観点から重要でしょう。

 Googleは今後、エージェントのライフサイクル全体にわたる包括的なシミュレーション機能を提供していく計画を示しており、User Simulationはその土台となる機能と言えます。

まとめ

 GoogleがADKに追加したUser Simulation機能は、LLMを活用してユーザー側の対話を自動生成し、マルチターンテストの作成・保守を大幅に簡素化するものです。ConversationScenarioで高レベルな目標を定義し、EvalConfigで細かく制御することで、柔軟かつ堅牢なテストを構築できます。AIエージェント開発において、テスト自動化の新たな選択肢となるでしょう。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!
目次