Yao et al. formalize tool-agent-user interaction as a POMDP: the agent observes only the hidden database through a fixed set of deterministic Python API tools (7 for tau-retail — get_user_details, get_product_details, get_order_details, list_product_types, modify_pending_order_items, modify_pending_order_address, modify_pending_order_payment; 6 for tau-airline — get_user_details, get_reservation_details, search_direct_flight, search_onestop_flight, update_reservation_flights, update_reservation_passengers, cancel_reservation) and never sees the underlying rows (tau-retail: 500 users, 50 products, 1000 orders; tau-airline: 500 users, 300 flights, 2000 reservations). A domain policy is injected into the agent’s system prompt (for example, “Basic economy cannot be modified. Basic economy cannot be cancelled after 24 hours of booking.”), and the user is an LM simulator (GPT-4-0613) seeded with a task instruction that requires multi-turn clarification — if the airline customer cannot change her basic economy reservation, she will ask the agent to cancel and rebook. The reward is binary: final database state must match the annotated goal. The paper proposes pass-k as the average over n independent trials of the probability that all k trials succeed, and pass-at-1 as the simple average success rate — the gap between the two is the headline finding.
Even GPT-4o function calling succeeds on 61.2% of tau-retail and only 35.2% of tau-airline (average 48.2), with pass-at-8 dropping to 0.2 on tau-retail and 10.8 on tau-airline — the agent succeeds sometimes but rarely succeeds on every run. A 36-trajectory failure breakdown of gpt-4o function calling on tau-retail finds 33.3% wrong-argument, 22.2% wrong-info, 19.4% wrong-decision, and 25.0% partial-resolution failures. Removing the policy document drops gpt-4o by 22.4% on tau-airline (but only 4.4% on retail), suggesting the model does follow rules when they are explicit. Trajectories are schematic; numbers are paper-report. This site does not host the PDF.
teaching explainer · Yao, Shinn, Razavi, Narasimhan · arXiv 2406.12045 · Sierra · arXiv:2406.12045 | airline trajectory in pane 2 is a teaching schematic of the published trajectory; main-results numbers in pane 4 are paper-report
0overview
tau-retail / tau-airline
tau-retail: 500 users / 50 products / 1000 orders · 7 API tools · 115 tasks. tau-airline: 500 users / 300 flights / 2000 reservations · 6 API tools · 50 tasks. Both use deterministic Python tools acting on hidden databases; agent never sees rows directly.
state · action · observation · transition · instruction
State S (hidden database). Action A = A_db union A_user. Observation O = O_db union O_user (agent only sees API responses; user simulator sees task instruction). Transition T is deterministic. Instruction R is binary: final database state matches ground truth.
average success vs reliability
If a task is run n trials and c of those trials end up successful, pass at k = E_task[(c choose k) / (n choose k)]. pass-at-1 = E[c/n]. pass-at-k measures the probability that all k independent trials succeed — the gap to pass-at-1 is the headline finding.
The next pane walks the POMDP setup — agent / tools / policy / user-simulator — as four components. The second pane replays the tau-airline example where the user wants to change a basic-economy flight; the agent follows the policy and offers cancel-and-rebook. The third pane prints the pass-at-1 versus pass-at-k metric and the GPT-4o FC numbers. The fourth pane prints the main-results table with twelve models and two domains. The fifth pane breaks down the 36 failed GPT-4o function-calling trajectories on tau-retail.
primer — what you need before you start
the task. tau-bench benchmarks LLM agents on real customer-service domains — retail and airline. The agent must follow domain rules, query a real (hidden) database via APIs, and resolve the user's underlying request. Strong models score only 46-53% pass@1 — real customer service is hard.
how it was done before. Prior agent benchmarks used Q&A-style tasks (HotpotQA, FEVER) or static goal descriptions (ALFWorld). tau-bench is the first to combine: (1) realistic domain rules, (2) a real database backend, (3) a user simulator that adapts based on agent behavior. The agent must read the rule book and the database schema, then act accordingly.
glossary — terms you will see.
POMDP — Partially Observable Markov Decision Process; standard RL framing for sequential decision-making under uncertainty.
state S — the hidden database (agent never sees rows directly).
action A — API call to the domain toolset, or a message to the user.
observation O — what the agent sees back: API response, user message.
transition T — deterministic in tau-bench (no randomness in tool calls).
instruction R — the ground-truth goal: final DB state must match.
user simulator — an LLM that plays the customer, with persona and hidden goal.
symbol table — what the letters mean.
— hidden state at step t.
— action at step t: (database call) or (message).
— observation at step t: or .
— policy: action given state and conversation history .
— probability that all k independent trials succeed.
— single-trial success rate.
tone legend — what the [brackets] mean.
[obs] observation [tool] tool / domain call
[pol] policy / POMDP [metric] pass@k metric
[eq] equation [take] key takeaway
[sys] system / meta [limit] paper-reported limit
Six panes cover, in pedagogical order: POMDP setup with the tau-airline example; pass@1 vs pass@k metric; main results across 12 models; failure mode analysis of GPT-4o FC; the paper's own limits. Each pane ends with key takeaways so you can stop after any section and still know what you learned.
1POMDP setup + four components
point: tau-bench formalizes tool-agent-user interaction as a POMDP. The agent calls deterministic Python API tools (7 for tau-retail, 6 for tau-airline) and only sees the returned observations, never the database rows directly. A domain policy is injected into the agent's system prompt. The user is an LM simulator (GPT-4-0613) seeded with a task instruction that requires multi-turn clarification — if the airline customer cannot change her basic-economy reservation, she will ask the agent to cancel and rebook.
Four-component ASCII diagram printed first, then a one-line interpretation per component.
API tools (deterministic) domain policy (system prompt) user simulator (LM) trajectory step observation (tool return)
2trajectory · tau-airline change flight
point: replay the verbatim trajectory from the published example: the user asks to change a basic-economy flight; the agent retrieves reservation JK9019, sees cabin=basic_economy and creation time 2024-05-14 18:00 EST (current time 2024-05-15 15:00 EST, about 21 hours elapsed); the policy forbids modification; the agent offers cancel-and-rebook as the only legal path; the user accepts and cancels; the user types ###STOP### to end the episode.
Trajectory text and policy excerpt are verbatim from the published trajectory — same reservation id, same timestamps, same agent reasoning.
user trajectory step API tool call observation policy excerpt
3pass@1 vs pass^k
point: pass-at-1 = E[c/n] is the average success rate over n independent trials. pass-at-k = E_task[(c choose k) / (n choose k)] is the probability that all k trials succeed. A high pass-at-1 with a low pass-at-k means the agent succeeds sometimes but is unreliable across runs.
Formula and the GPT-4o FC reliability gap printed as two ASCII blocks — one for the metric, one for the numbers.
metric (formula / number) reliability gap
4main results · twelve models · two domains
point: GPT-4o function calling leads at 61.2 / 35.2 / 48.2 average, but no model breaks 50% on tau-airline. GPT-4 turbo / 32k trail closely. GPT-3.5-turbo sits at 20.0 / 10.8 / 15.4 — the older generation is roughly a third of the new one. Claude-3-opus at 44.2 / 34.7 / 39.5 is the strongest non-OpenAI model. Llama-3-70B uses ReAct instead of function calling (table caption), which is why it sits at 14.8 / 14.4 / 14.6 — well below the function-calling models on the same domains.
Main-results sheet — 12 models × 4 columns, paper-report numbers, no rounding.
paper-report number
5failure analysis
point: the failure analysis section breaks down 36 failed GPT-4o function-calling tau-retail trajectories into three failure types — wrong argument or info provided (the challenge of complex database reasoning), incorrect decision-making (the challenge of domain understanding and rule following), and partial resolution of compound requests. Removing the policy from the system prompt drops GPT-4o by 22.4% on tau-airline but only 4.4% on tau-retail — the policy matters most where the rules are not commonsense.
Breakdown pie plus three failure-type descriptions, each printed as a block with the paper's own phrasing.
failure / limit paper-report %
Schematic traces are teaching schematics. Numbers reported: Yao, Shinn, Razavi, Narasimhan, tau-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains, arXiv:2406.12045v1 (17 Jun 2024), arXiv:2406.12045. Repo: github.com/sierra-research/tau-bench. This site does not host the PDF.