Tau-Bench 用来评测 agent 作为客服代表时的表现:它需要阅读 policy wiki、调用数据工具,并在不违反业务规则的前提下完成模拟用户请求。
QitOS 提供:
TauBenchAdapter
- 自包含运行时
TauRuntimeEnv
因此你不必额外安装上游 tau_bench 包,就可以直接运行该 benchmark。
可用环境
| 环境 | 可用 split | 终止工具 |
|---|
retail | train、dev、test | transfer_to_human_agents |
airline | test | transfer_to_human_agents |
准备工作
pip install "qitos[benchmarks]"
export OPENAI_API_KEY="sk-..."
Tau-Bench 的任务数据已经 vendored 进 QitOS 包中,无需额外下载。
加载任务
from qitos.benchmark import TauBenchAdapter
adapter = TauBenchAdapter(env_name="retail", task_split="test")
records = adapter.load_records()
tasks = adapter.to_tasks(records, split="test", limit=5)
也可以用一行式 loader:
from qitos.benchmark.tau_bench.adapter import load_tau_bench_tasks
tasks = load_tau_bench_tasks(env_name="retail", split="test", limit=10)
运行评测
优先使用官方 CLI:
qit bench run \
--benchmark tau-bench \
--split test \
--subset retail \
--limit 50 \
--output results/tau_retail_test.jsonl \
--model-name "Qwen/Qwen3-8B"
然后继续做聚合与检查:
qit bench eval --input results/tau_retail_test.jsonl --json
qita board --logdir runs
tau_bench_eval.py 依然保留,但它现在只是同一套官方结果结构与 trace 契约上的 benchmark wrapper。
运行单个任务:
python examples/benchmarks/tau_bench_eval.py \
--tau-env retail \
--tau-split test \
--task-index 0 \
--max-steps 30 \
--model-name "Qwen/Qwen3-8B" \
--api-key "$OPENAI_API_KEY"
运行完整 benchmark:
python examples/benchmarks/tau_bench_eval.py \
--run-all \
--tau-env retail \
--tau-split test \
--num-trials 3 \
--limit 50 \
--concurrency 4 \
--output-jsonl results/tau_retail_test.jsonl \
--trace-logdir runs \
--model-name "Qwen/Qwen3-8B" \
--api-key "$OPENAI_API_KEY"
runtime 如何工作
TauRuntimeEnv 提供了最小可替换的 reset / step / calculate_reward 接口。reward 通过重放 ground-truth action sequence 并比较最终状态哈希来计算。
Agent 只有在:
- 工具调用引起了正确状态转移
- 文本回复中包含了要求的输出值
时,才会得到 1.0。
如何检查结果
典型结果 JSONL 会记录:
task_id
trial
env
reward
success
stop_reason
steps
latency_seconds
你也可以用 qita 检查具体 run:
qita board --logdir runs
qita replay --run runs/<run_id>