始める前に
エージェントの動作をシミュレートして評価するには、次の操作を完了していることを確認します。
- エージェント バージョンを作成する: シミュレーションには、システム指示、ツール、モデルなどを含む、エージェントの構成の不変のスナップショットが必要です。エージェント レジストリにエージェントのバージョンを 1 つ以上作成していることを確認してください。
- SDK を初期化する: シミュレーションをプログラムで実行する場合は、Agent Platform SDK をインストールし、エージェントを評価するの説明に沿ってクライアントを初期化します。
シミュレーションを使用すると、既存の本番環境データがなくても、包括的な評価スイートをゼロから構築できます。このプロセスでは、LLM を使用してテストケースを自動的に生成し、ユーザー役としてエージェントの複数ターンの会話ロジックをストレステストします。
2 ステップのシミュレーション ワークフロー
通常、新しいエージェントのテストは 2 段階のプロセスで行われます。
シナリオを生成する: エージェントの指示とツールの定義に基づいて「テスト仕様」のデータセットを作成します。
セッションをシミュレートする: シミュレートされたユーザーがエージェントとやり取りして動作トレースを生成することで、これらの仕様を実行します。トレースは、モデルの入力、レスポンス、ツール呼び出しなど、エージェントの動作の事実に基づいた不変の記録です。
最初のステップでは、システムが評価ケースを作成します。評価ケースは、エージェントのタスクを定義する仕様です。各ケースは次の 2 つの要素で構成されます。
- 開始プロンプト: ユーザーがエージェントに送信する最初のメッセージ。
- 会話プラン: シミュレートされたユーザー向けの非表示の「指示」。目標と、エージェントが特定の質問をした場合の反応方法を説明します。
2 つ目の手順では、システムは正規のエージェント データ形式でエージェントの動作のリストを生成します。
コンソールでシナリオを生成する
Google Cloud コンソールで、[エージェント プラットフォーム] > [エージェント] > [評価] ページに移動します。
[新しい評価] をクリックし、[セッションをシミュレート] を選択します。
シナリオをガイドする生成指示を入力します(例: 「ユーザーがフライトを予約しようとしたが、気が変わったシナリオを生成する」)。
生成されたテーブルを確認します。プロンプトを編集したり、独自のテストケースを手動で追加したりできます。
ユーザー シミュレーションを実行する
シナリオが生成されると、ユーザー シミュレータがユーザーとして会話を進めます。
ユーザー シミュレーションの設定
シミュレーションの実行時に、次の属性を構成できます。
- 最大ターン数: マルチターン エージェントの実行で許可される呼び出しの最大数。このプロパティを使用すると、エージェントとユーザー シミュレータが無限ループに陥るランオフ会話を停止できます。(デフォルト値は 5 です)。
- モデル名: マルチターンのエージェント実行で次のユーザー メッセージをシミュレートするモデル名。
- モデル構成: ユーザー メッセージをシミュレートするモデルの構成。
SDK の例: プログラムによるシミュレーション
Agent Platform SDK を使用して評価スイートをブートストラップすることもできます。
# 1. Define agent
travel_agent = Agent(
model="gemini-3-flash-preview",
name='travel_agent',
instruction='You are a travel expert, help users to find flights, book flights with flight ID',
tools=[find_flights, book_flight],
)
# 2. Generate scenarios from agent info
travel_agent_info = types.evals.AgentInfo.load_from_agent(agent=travel_agent)
eval_dataset = client.evals.generate_conversation_scenarios(
agent_info=travel_agent_info,
config={
"count": 5,
"generation_instruction": "Generate scenarios where the user tries to book a flight.",
"environment_context": "Today is Monday. I am located in San Francisco. Flights to Paris, New York, Tokyo, Chicago, Sydney, etc are available.",
},
)
# 3. Simulate multi-turn interactions
eval_dataset_with_traces = client.evals.run_inference(
agent=travel_agent,
src=eval_dataset,
config={
"user_simulator_config": {
"max_turn": 5
}
}
)