nemo_voice_agent.evaluation.tools.tau2_retail_tools

View as Markdown

Tau2-retail tool ports.

Same architecture as tau2_airline_tools.py: dict-form DB in self.state["db"], _Tau2InvokeMixin for sync/async dual-routing, WriteScenarioTool subclass records each mutation into self.state["actions"].

Module Contents

Classes

Functions

NameDescription
_db_not_initialized-
_get_item_dictFind a variant by item_id across all products (mirrors tau2’s _get_item).
_get_order_dict-
_get_payment_method_dict-
_get_product_dict-
_get_user_dict-
_get_variant_dict-
_is_pending_orderMirror tau2: any status containing ‘pending’ counts as pending for some checks.
_round2-

Data

TAU2_RETAIL_ACTION_TYPES

TAU2_RETAIL_TOOL_CLASSES

TAU2_RETAIL_TOOL_NAME_TO_CLASS

API

class nemo_voice_agent.evaluation.tools.tau2_retail_tools.CalculateTool()

Bases: _Tau2ReadTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.CalculateTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.CalculateParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.CancelPendingOrderTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.CancelPendingOrderTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.CancelPendingOrderParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ExchangeDeliveredOrderItemsTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ExchangeDeliveredOrderItemsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ExchangeDeliveredOrderItemsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.FindUserIdByEmailTool()

Bases: _Tau2ReadTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.FindUserIdByEmailTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.FindUserIdByEmailParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.FindUserIdByNameZipTool()

Bases: _Tau2ReadTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.FindUserIdByNameZipTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.FindUserIdByNameZipParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetItemDetailsTool()

Bases: _Tau2ReadTool

DESCRIPTION
= 'Get the inventory details of an item.'
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetItemDetailsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.GetItemDetailsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetOrderDetailsTool()

Bases: _Tau2ReadTool

DESCRIPTION
= 'Get the status and details of an order.'
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetOrderDetailsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.GetOrderDetailsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetProductDetailsTool()

Bases: _Tau2ReadTool

DESCRIPTION
= 'Get the inventory details of a product.'
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetProductDetailsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.GetProductDetailsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetUserDetailsTool()

Bases: _Tau2ReadTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.GetUserDetailsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.GetUserDetailsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ListAllProductTypesTool()

Bases: _Tau2ReadTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ListAllProductTypesTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ListAllProductTypesParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderAddressTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderAddressTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ModifyPendingOrderAddressParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderItemsTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderItemsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ModifyPendingOrderItemsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderPaymentTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyPendingOrderPaymentTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ModifyPendingOrderPaymentParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyUserAddressTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ModifyUserAddressTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ModifyUserAddressParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.ReturnDeliveredOrderItemsTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.ReturnDeliveredOrderItemsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.ReturnDeliveredOrderItemsParams
) -> dict
class nemo_voice_agent.evaluation.tools.tau2_retail_tools.TransferToHumanAgentsTool()

Bases: _Tau2WriteTool

DESCRIPTION
properties
Dict[str, Any]
required_properties
List[str]
nemo_voice_agent.evaluation.tools.tau2_retail_tools.TransferToHumanAgentsTool._after_result(
params: pipecat.services.llm_service.FunctionCallParams
) -> None
async

Emit <exit> only after the tool result has been delivered.

Ordering matters: pipecat must commit the tool-call record before the bridge tears down the session on <exit>.

nemo_voice_agent.evaluation.tools.tau2_retail_tools.TransferToHumanAgentsTool._do_work(
p: nemo_voice_agent.evaluation.tools.tau2_retail_params.TransferToHumanAgentsParams
) -> dict
nemo_voice_agent.evaluation.tools.tau2_retail_tools.TransferToHumanAgentsTool._execute(
kwargs = {}
) -> dict
async
class nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2InvokeMixin()

Provides sync invoke(**kwargs) + async _execute(**kwargs) routing.

Subclasses set PARAMS_MODEL = MyParams and implement _do_work(p).

PARAMS_MODEL
Optional[Type[BaseModel]] = None
nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2InvokeMixin._do_work(
p
) -> dict
nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2InvokeMixin._execute(
kwargs = {}
) -> dict
async

Async entry — used by pipecat at live LLM call time.

Pure: returns the result; StandardSchemaTool.__call__ owns delivery and applies the empty-result normalization centrally.

nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2InvokeMixin.invoke(
kwargs = {}
) -> dict

Synchronous entry — used by Tau2BaseScenario._gold_replay.

class nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2ReadTool(
shared_state: typing.Optional[dict] = None,
description: typing.Optional[str] = None
)

Bases: _Tau2InvokeMixin, StandardSchemaTool

Base for retail read-only tools.

DESCRIPTION
str = ''
state
= shared_state if shared_state is not None else {}
class nemo_voice_agent.evaluation.tools.tau2_retail_tools._Tau2WriteTool(
shared_state: typing.Optional[dict] = None,
description: typing.Optional[str] = None
)

Bases: _Tau2InvokeMixin, WriteScenarioTool

Base for retail write tools (includes generic action-recording tools).

DESCRIPTION
str = ''
state
= shared_state if shared_state is not None else {}
nemo_voice_agent.evaluation.tools.tau2_retail_tools._db_not_initialized() -> dict
nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_item_dict(
db: dict,
item_id: str
) -> typing.Optional[dict]

Find a variant by item_id across all products (mirrors tau2’s _get_item).

nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_order_dict(
db: dict,
order_id: str
) -> typing.Optional[dict]
nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_payment_method_dict(
user: dict,
payment_method_id: str
) -> typing.Optional[dict]
nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_product_dict(
db: dict,
product_id: str
) -> typing.Optional[dict]
nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_user_dict(
db: dict,
user_id: str
) -> typing.Optional[dict]
nemo_voice_agent.evaluation.tools.tau2_retail_tools._get_variant_dict(
db: dict,
product_id: str,
variant_id: str
) -> typing.Optional[dict]
nemo_voice_agent.evaluation.tools.tau2_retail_tools._is_pending_order(
order: dict
) -> bool

Mirror tau2: any status containing ‘pending’ counts as pending for some checks.

nemo_voice_agent.evaluation.tools.tau2_retail_tools._round2(
value: float
) -> float
nemo_voice_agent.evaluation.tools.tau2_retail_tools.TAU2_RETAIL_ACTION_TYPES: List[str] = ['cancel_pending_order', 'exchange_delivered_order_items', 'modify_pending_order...
nemo_voice_agent.evaluation.tools.tau2_retail_tools.TAU2_RETAIL_TOOL_CLASSES: List[Type[StandardSchemaTool]] = [FindUserIdByNameZipTool, FindUserIdByEmailTool, GetOrderDetailsTool, GetProduct...
nemo_voice_agent.evaluation.tools.tau2_retail_tools.TAU2_RETAIL_TOOL_NAME_TO_CLASS: Dict[str, Type[StandardSchemaTool]] = {'find_user_id_by_name_zip': FindUserIdByNameZipTool, 'find_user_id_by_email': F...