eval/scenarios/.
A scenario has three parts:
simulation_context— a natural language briefing that tells the LLM how to play the user role across the whole conversation.setup— optional initial slot values injected before the conversation starts (e.g. pre-authenticated state).goals— what success looks like, expressed as deterministicassertions(checked against the tracker event history) and natural languagecriteria(scored by an LLM judge).
Schema
eval/scenarios/order_delay.yml
Field Reference
simulation_context
A free-form natural language description of the simulated user and the conversation goal. The LLM uses this to generate consistent user turns across the whole conversation. You can include user behaviour (emotional state, interaction style), conversational intent, and contextual facts (account state, order details).
A single sentence works. The more specific you are, the more targeted the simulation.
setup.initial_slots
Slot values injected into the conversation before the first user turn. Use this to pre-authenticate users, pre-fill context, or skip onboarding steps that are out of scope.
When initial_slots are set, the evaluator sends a /session_start message first so that any custom action_session_start logic runs against an empty tracker, then injects the slot values on top.
Slot names must exist in your domain with compatible types. validate_scenario checks this before any simulation runs.
goals.criteria
A list of natural language statements describing required bot-side behavior. The LLM judge evaluates each criterion independently after the conversation ends and produces a pass/fail verdict with a written rationale. A run is marked failed if any criterion fails.
Use criteria for deal-breakers — non-negotiable system behavior such as correct step ordering, mandatory tool calls, flow adherence, or required phrasing. Do not use criteria for subjective qualities like tone or empathy, or for overall user goal achievement; those are captured by quality metrics and do not gate the pass/fail verdict.
If you omit criteria, the run still produces a full transcript and assertion results.
goals.assertions
Deterministic, binary checks run against the conversation’s full event history. These use the same assertion types as E2E tests, with the addition of the sequencing type: