跳转到主要内容
Tau-Bench 用来评测 agent 作为客服代表时的表现:它需要阅读 policy wiki、调用数据工具,并在不违反业务规则的前提下完成模拟用户请求。 QitOS 提供:
  • TauBenchAdapter
  • 自包含运行时 TauRuntimeEnv
因此你不必额外安装上游 tau_bench 包,就可以直接运行该 benchmark。

可用环境

环境可用 split终止工具
retailtraindevtesttransfer_to_human_agents
airlinetesttransfer_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>