nemo_voice_agent.evaluation.scenarios.data.tau2_airline.base

View as Markdown

Tau2-airline scenario base + seed scenarios.

Tau2AirlineBaseScenario glues together:

  • Tau2BaseScenario (cross-domain machinery: voice-task index, _gold_replay, Persona/Task stubs, structured user side, policy.md loader)
  • TAU2_AIRLINE_TOOL_NAME_TO_CLASS (the 14 ported tools)

Each scenario subclass only needs to set tau2_id (e.g. "0"). Everything else (current_date, tool map, db, policy, expected_scenario_db, reference_answer, user_persona / user_task / user_actions) derives from the upstream data files via cached properties.

Hand-authored seed scenarios live at the bottom of this file. Auto-scaffolded scenarios land in group_Nx.py siblings via the scaffold generator at scripts/prepare_tau2_data/generate_airline_scaffolds.py.

Module Contents

Classes

NameDescription
Tau2AirlineBaseScenarioBase class for scenarios ported from tau2-bench/airline (voice-user-sim-v1.0).

API

class nemo_voice_agent.evaluation.scenarios.data.tau2_airline.base.Tau2AirlineBaseScenario()

Bases: Tau2BaseScenario

Base class for scenarios ported from tau2-bench/airline (voice-user-sim-v1.0).

Subclasses must set tau2_id (the key from tasks.json). For example::

@register_eval_scenario class Tau2Airline0(Tau2AirlineBaseScenario): name = “tau2_airline__0” tau2_id = “0”

Everything else (current_date, tool registry, expected DB, reference action list, user persona/task) derives from the upstream files via Tau2BaseScenario machinery.

agent_resources
Resources

Full tau2_airline tool surface (all 14 ported tools) + per-scenario info.

Tool keys are the Tool class names (matching the @register_schema_tool_for_eval registry keys); each maps to an empty kwargs dict because tau2 tools take only shared_state which the bot server injects automatically. The scenario DB flows in via setup_shared_state (seeded with a deep copy of db.json).

Note: this OVERRIDES Tau2BaseScenario.agent_resources (which returns an empty stub). The stub exists for Scenario-contract introspection; the live run needs the populated dict to actually register tools.

domain
str = 'tau2_airline'
has_user_state
bool = False
success_signals
nemo_voice_agent.evaluation.scenarios.data.tau2_airline.base.Tau2AirlineBaseScenario._build_tool_map(
state: dict
) -> typing.Dict[str, typing.Any]

Instantiate one of each ported tool, bound to the given state.

Used by Tau2BaseScenario._gold_replay to dispatch reference actions. For live runs the agent bot constructs its own tool instances via the usual register_schema_tools_to_llm path with shared_state=state.