エージェントの動作をシミュレートする

始める前に

エージェントの動作をシミュレートして評価するには、次の操作を完了していることを確認します。

  • エージェント バージョンを作成する: シミュレーションには、システム指示、ツール、モデルなどを含む、エージェントの構成の不変のスナップショットが必要です。エージェント レジストリにエージェントのバージョンを 1 つ以上作成していることを確認してください。
  • SDK を初期化する: シミュレーションをプログラムで実行する場合は、Agent Platform SDK をインストールし、エージェントを評価するの説明に沿ってクライアントを初期化します。

シミュレーションを使用すると、既存の本番環境データがなくても、包括的な評価スイートをゼロから構築できます。このプロセスでは、LLM を使用してテストケースを自動的に生成し、ユーザー役としてエージェントの複数ターンの会話ロジックをストレステストします。

2 ステップのシミュレーション ワークフロー

通常、新しいエージェントのテストは 2 段階のプロセスで行われます。

  1. シナリオを生成する: エージェントの指示とツールの定義に基づいて「テスト仕様」のデータセットを作成します。

  2. セッションをシミュレートする: シミュレートされたユーザーがエージェントとやり取りして動作トレースを生成することで、これらの仕様を実行します。トレースは、モデルの入力、レスポンス、ツール呼び出しなど、エージェントの動作の事実に基づいた不変の記録です。

最初のステップでは、システムが評価ケースを作成します。評価ケースは、エージェントのタスクを定義する仕様です。各ケースは次の 2 つの要素で構成されます。

  • 開始プロンプト: ユーザーがエージェントに送信する最初のメッセージ。
  • 会話プラン: シミュレートされたユーザー向けの非表示の「指示」。目標と、エージェントが特定の質問をした場合の反応方法を説明します。

2 つ目の手順では、システムは正規のエージェント データ形式でエージェントの動作のリストを生成します。

コンソールでシナリオを生成する

  1. Google Cloud コンソールで、[エージェント プラットフォーム] > [エージェント] > [評価] ページに移動します。

    [評価] に移動

  2. [新しい評価] をクリックし、[セッションをシミュレート] を選択します。

  3. シナリオをガイドする生成指示を入力します(例: 「ユーザーがフライトを予約しようとしたが、気が変わったシナリオを生成する」)。

  4. 生成されたテーブルを確認します。プロンプトを編集したり、独自のテストケースを手動で追加したりできます。

ユーザー シミュレーションを実行する

シナリオが生成されると、ユーザー シミュレータがユーザーとして会話を進めます。

ユーザー シミュレーションの設定

シミュレーションの実行時に、次の属性を構成できます。

  • 最大ターン数: マルチターン エージェントの実行で許可される呼び出しの最大数。このプロパティを使用すると、エージェントとユーザー シミュレータが無限ループに陥るランオフ会話を停止できます。(デフォルト値は 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
        }
    }
)