Returns
It returns a result object from the Conversation Simulator containing the complete conversation history, status, and metadata. This is used to analyze how your agent performed in the test scenario.Agent Options
- Simple
- Chat History
- Structured
The quickest way to get started. Your function receives just the latest user message as a string.
All three signatures work with
generate() and simulate(). Both sync and async functions are supported. The SDK auto-detects which signature you’re using from the type hint on the first parameter.Example
Parameters
The session identifier for this simulation.
The agent function that generates responses. Supported signatures:
- Simple:
(user_message: str) -> str— receives last user message - Chat History:
(messages: list[dict]) -> str— receives full chat history (OpenAI format) - Structured:
(input_data: AgentInput) -> AgentResponse— structured input/output
usage_info, cost_info, or retrieval_context.Maximum number of conversation turns. Defaults to the Test Case’s max turns if not provided.
Whether to call your agent one final time after the simulated user sends their last message. Default: True.
When enabled, your agent will have the opportunity to respond to the conversation’s final user message, ensuring complete dialogue coverage for evaluation purposes.
Whether to include metadata in the simulation result. Default: False
If True, the agent will generate the first message before any user messages are generated. Default: False
When
agent_goes_first is set to True:- Any
input(first user message) defined on the associatedTestCasewill be ignored. - The first call to your agent will have an empty
messageslist in theAgentInput. Ensure your agent function can handle cases whereinput_data.last_user_message_str()returnsNone(or the messages list is empty).
If True, the simulation will stop when the agent returns an empty (
"" / None) response. Default: TrueWhen
stop_when_agent_returns_empty_response is set to False:- The simulation will continue even if the agent returns a response that is empty (
"") orNone. - This allows for more flexible conversation flows where you want to capture all agent interactions regardless of content.
- Be careful when using this option, as it may lead to further credit consumption if the agent keeps returning empty responses. To mitigate this, you can also make use of the
max_turnsparameter to set an upper limit on the number of turns.