nemo_voice_agent.evaluation.tools.tau2_airline_params

View as Markdown

Pydantic parameter models and enums for tau2_airline tool functions.

This file holds two classes of models, both consumed by nemo_voice_agent.evaluation.tools.tau2_airline_tools:

  1. Domain data modelsFlightDB / User / Reservation / Flight / Passenger / payment-method variants / etc. Mirror tau2’s data_model.py 1:1 so dicts loaded from nemo_voice_agent/evaluation/data/tau2_airline/db.json round-trip through Model.model_validate(...) cleanly. Used by tools that need to manipulate strongly-typed records (e.g., creating a new Reservation).

  2. Tool argument schemas — one *Params model per LLM-exposed tool. Each tool’s body calls Model.model_validate(params) at the top and catches ValidationError to produce a standard {"status": "error", ...} response for bad LLM-supplied inputs. Field descriptions come verbatim from tau2’s tool docstring Args: blocks so the LLM sees identical instructions.

Convention:

  • Enums use StrEnum so values JSON-serialize as plain strings and compare equal to their literal counterparts.
  • All param models use extra="forbid" — required by plan §5.1 step 3 to match tau2’s strict validation semantics.
  • Data models do NOT use extra="forbid" because db.json may carry upstream-added fields we don’t model yet; dropping them silently is safer than crashing on load.

Module Contents

Classes

Functions

NameDescription
validation_error_responseTranslate a pydantic ValidationError into a standard tool-error dict.

Data

AirportInfo

AvailableSeats

FlightDateStatus

PaymentMethod

SeatPrices

API

class nemo_voice_agent.evaluation.tools.tau2_airline_params.Address()

Bases: BaseModel

address1
str = Field(description='Primary address line')
address2
Optional[str]
city
str = Field(description='City name')
country
str = Field(description='Country name')
state
str = Field(description='State or province name')
zip
str = Field(description='Postal code')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.AirportCode()

Bases: BaseModel

city
str = Field(description='City name')
iata
str = Field(description='IATA code')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.BookReservationParams()

Bases: _ToolParamsBase

cabin
CabinClass
destination
str
flight_type
FlightType
flights
List[FlightInfo]
insurance
Insurance
nonfree_baggages
int
origin
str
passengers
List[Passenger]
payment_methods
List[Payment]
total_baggages
int
user_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CabinClass

Bases: enum.Enum

basic_economy
= 'basic_economy'
business
= 'business'
economy
= 'economy'
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CalculateParams()

Bases: _ToolParamsBase

expression
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CancelReservationParams()

Bases: _ToolParamsBase

reservation_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Certificate()

Bases: PaymentMethodBase

amount
float = Field(description='Certificate value amount')
source
Literal['certificate']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.CreditCard()

Bases: PaymentMethodBase

brand
str
last_four
str
source
Literal['credit_card']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.DirectFlight()

Bases: FlightBase

available_seats
AvailableSeats = Field(description='Available seats by class')
date
Optional[str]
prices
SeatPrices = Field(description='Current prices by class')
scheduled_arrival_time_est
str
scheduled_departure_time_est
str
status
Literal['available']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Flight()

Bases: FlightBase

dates
Dict[str, FlightDateStatus]
scheduled_arrival_time_est
str
scheduled_departure_time_est
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightBase()

Bases: BaseModel

destination
str
flight_number
str = Field(description='Unique flight identifier')
origin
str = Field(description='IATA code for origin airport')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDB()

Bases: BaseModel

Top-level shape of nemo_voice_agent/evaluation/data/tau2_airline/db.json.

flights
Dict[str, Flight]
reservations
Dict[str, Reservation]
users
Dict[str, User]
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDataStatusFlying()

Bases: BaseModel

actual_departure_time_est
str
estimated_arrival_time_est
str
status
Literal['flying'] = Field(description='Indicates flight is in flight')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDataStatusOnTime()

Bases: BaseModel

estimated_arrival_time_est
str
estimated_departure_time_est
str
status
Literal['on time'] = Field(description='Indicates flight is on time')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusAvailable()

Bases: BaseModel

available_seats
AvailableSeats = Field(description='Available seats by class')
prices
SeatPrices = Field(description='Current prices by class')
status
Literal['available']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusCancelled()

Bases: BaseModel

status
Literal['cancelled']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusDelayed()

Bases: BaseModel

estimated_arrival_time_est
str
estimated_departure_time_est
str
status
Literal['delayed'] = Field(description='Indicates flight was delayed')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatusLanded()

Bases: BaseModel

actual_arrival_time_est
str
actual_departure_time_est
str
status
Literal['landed'] = Field(description='Indicates flight has landed')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightInfo()

Bases: BaseModel

One element of the flights argument to book_reservation / update_reservation_flights — just a flight-number + date pair.

date
str
flight_number
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightType

Bases: enum.Enum

one_way
= 'one_way'
round_trip
= 'round_trip'
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetFlightStatusParams()

Bases: _ToolParamsBase

date
str = Field(description='The date of the flight.')
flight_number
str = Field(description='The flight number.')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetReservationDetailsParams()

Bases: _ToolParamsBase

reservation_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GetUserDetailsParams()

Bases: _ToolParamsBase

user_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.GiftCard()

Bases: PaymentMethodBase

amount
float = Field(description='Gift card value amount')
id
str
source
Literal['gift_card']
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Insurance

Bases: enum.Enum

no
= 'no'
yes
= 'yes'
class nemo_voice_agent.evaluation.tools.tau2_airline_params.ListAllAirportsParams()

Bases: _ToolParamsBase

No arguments — LLM still passes an empty dict {}.

class nemo_voice_agent.evaluation.tools.tau2_airline_params.MembershipLevel

Bases: enum.Enum

gold
= 'gold'
regular
= 'regular'
silver
= 'silver'
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Name()

Bases: BaseModel

first_name
str = Field(description="The person's first name")
last_name
str = Field(description="The person's last name")
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Passenger()

Bases: BaseModel

dob
str
first_name
str = Field(description="Passenger's first name")
last_name
str = Field(description="Passenger's last name")
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Payment()

Bases: BaseModel

A payment record (line item) attached to a reservation.

amount
int = Field(description='Payment amount in dollars')
payment_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.PaymentMethodBase()

Bases: BaseModel

id
str
source
str = Field(description='Type of payment method')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.Reservation()

Bases: BaseModel

cabin
CabinClass = Field(description='Selected cabin class')
created_at
str
destination
str
flight_type
FlightType = Field(description='Type of trip')
flights
List[ReservationFlight]
insurance
Insurance
nonfree_baggages
int
origin
str = Field(description='IATA code for trip origin')
passengers
List[Passenger]
payment_history
List[Payment]
reservation_id
str
status
Optional[Literal['cancelled']]
total_baggages
int
user_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.ReservationFlight()

Bases: FlightBase

date
str
price
int = Field(description='Flight price in dollars.')
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SearchDirectFlightParams()

Bases: _ToolParamsBase

date
str
destination
str
origin
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SearchOnestopFlightParams()

Bases: _ToolParamsBase

date
str
destination
str
origin
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.SendCertificateParams()

Bases: _ToolParamsBase

amount
int
user_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.TransferToHumanAgentsParams()

Bases: _ToolParamsBase

summary
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationBaggagesParams()

Bases: _ToolParamsBase

nonfree_baggages
int
payment_id
str
reservation_id
str
total_baggages
int
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationFlightsParams()

Bases: _ToolParamsBase

cabin
CabinClass
flights
List[FlightInfo]
payment_id
str
reservation_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.UpdateReservationPassengersParams()

Bases: _ToolParamsBase

passengers
List[Passenger]
reservation_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params.User()

Bases: BaseModel

address
Address = Field(description="User's address information")
dob
str
email
str = Field(description="User's email address")
membership
MembershipLevel = Field(description="User's membership level")
name
Name = Field(description="User's full name")
payment_methods
Dict[str, PaymentMethod] = Field(description="User's saved payment methods")
reservations
List[str]
saved_passengers
List[Passenger]
user_id
str
class nemo_voice_agent.evaluation.tools.tau2_airline_params._ToolParamsBase()

Bases: BaseModel

Strict base: reject unknown args, freeze types after validation.

model_config
= ConfigDict(extra='forbid')
nemo_voice_agent.evaluation.tools.tau2_airline_params.validation_error_response(
error: pydantic.ValidationError
) -> typing.Dict[str, typing.Any]

Translate a pydantic ValidationError into a standard tool-error dict.

Tools should call this in their except ValidationError block so the LLM sees a structured error rather than a raw Python traceback. Format mirrors eva_airline tools’ error shape so the runner’s downstream handling doesn’t need a separate code path per domain.

nemo_voice_agent.evaluation.tools.tau2_airline_params.AirportInfo = Annotated[List[AirportCode], Field(description='Airport information')]
nemo_voice_agent.evaluation.tools.tau2_airline_params.AvailableSeats = Annotated[Dict[CabinClass, int], Field(description='Available seats for differen...
nemo_voice_agent.evaluation.tools.tau2_airline_params.FlightDateStatus = Union[FlightDateStatusAvailable, FlightDateStatusLanded, FlightDateStatusCancell...
nemo_voice_agent.evaluation.tools.tau2_airline_params.PaymentMethod = Union[CreditCard, GiftCard, Certificate]
nemo_voice_agent.evaluation.tools.tau2_airline_params.SeatPrices = Annotated[Dict[CabinClass, int], Field(description='Prices for different cabin c...