当前位置:首页>排行榜>τ²客服可靠评测2026.09.23

τ²客服可靠评测2026.09.23

  • 更新时间 2026-09-23 10:46:37

τ²客服可靠评测2026.09.23

一个客服 Agent demo 跑通了,不等于它能上线。 你敢说"它在真实用户手里,连续 4 次都不会改错数据库 / 违规退款 / 引导失败"吗? 为什么同样一个 Agent,把"用户"从被动答话换成"也会动手改状态"之后,分数直接崩了三成?

读完你能做到:用 τ²-bench 在部署前量化一个工具型客服 Agent 的可靠性——不是"平均能做对几题",而是"连续 k 次都做对的概率"(pass^k),并把"推理算对了但没引导好用户"的协调失败单独揪出来。


四要素卡(先拿结论)

  • 场景:客服 / 技术支持团队上线"工具调用型 Agent"(退改签、账单、套餐变更)之前,要在真实多轮、带工具、且用户也参与改状态的交互里,量化它的可靠性,避免上线后改错数据库、违反业务策略或被一个不配合的用户带偏。
  • 条件:① 模型已具备基础工具调用能力;② 有可被 LiteLLM 路由的 agent / user 两个模型端点;③ 任务域的"工具集 + 策略文档 + 程序化 DB 状态 oracle"可复现(τ²-bench 内置 airline / retail / telecom / banking 四域);④ 要测可靠性必须跑多次 trial(pass^k 需 k≥2)。
  • 方法:用"LLM 用户模拟器 + 程序化环境状态 oracle"构造可验证的多轮交互评测——agent 与模拟用户在同一共享状态上对话、各自调工具;跑完后用 eval 谓词检查最终环境状态是否匹配目标。核心是 dual-control(双控)域:用户也持有工具去改共享状态,专门暴露"协调失败"。
  • 效果:业务收益 = 上线前用 pass^k 直接当作 SLA 依据("k 次尝试全成功的概率"),免去真人回归、跨 scaffold 横向对比;技术指标 = GPT-4.1 在 τ²-bench 官方设定下 pass^1 约为 retail≈74% / airline≈56% / telecom(双控)≈34%,且从 no-user 切到 dual-control 性能显著下降,可把错误拆成"推理错" vs "沟通/协调错"。代价 = 需 agent+user 两个端点、按 trial×任务×轮数计费、用户模拟器本身也是测量仪器需披露。

1. 技术背景与问题定义

1.1 现有做法卡在哪

客服 Agent 的评测长期被两种"软"方式裹挟:

  • 单轮 completion / 多选 benchmark:测的是"会不会答题",不是"能不能在十轮对话里把一笔退款办对"。
  • LLM-as-judge 给轨迹打分:快,但已被反复证明有 verbosity bias、self-preference、position bias(我们的 AgentJudgeBench 那期专门拆过)。用 LLM 当裁判去判"这个 Agent 办业务办得好不好",本质上是在用另一个可能犯错的模型去给一个可能犯错的模型背书。

更隐蔽的坑是:绝大多数 benchmark 假设"只有 Agent 能动世界,用户只是答话的信息源"(原文叫 single-control)。但真实客服里,用户也得动手——确认短信、在 App 上点同意、自己改个密码。Agent 算得再对,如果用户没被引导好去完成他那一半操作,活儿照样黄。这类"协调失败"在单控设定里根本测不出来。

1.2 τ²-bench 的核心主张

τ²-bench(Sierra Research,arXiv 2506.07982,MIT,GitHub sierra-research/tau2-bench)要做的是:把客服 Agent 放进一个"用户也会用工具改共享状态"的双控环境里,用程序化 oracle 判最终结果,用 LLM 模拟用户,从而可规模化、可复现地测量可靠性

四个关键贡献(直接决定它为什么值得做一期):

  1. Telecom 双控域,建模成 Dec-POMDP:agent 与 user 都用工具作用在共享动态环境上,同时考察"推理"和"引导用户"。
  2. 组合式任务生成器:从原子组件程序化拼出多样且可验证的任务,保证域覆盖与可控复杂度(不用人工写每条边角 case)。
  3. 和用户模拟器强耦合的环境:用户行为被工具和可观状态约束,仿真保真度高于"随便聊"。
  4. 细粒度错误分解:通过消融把"推理错"和"沟通/协调错"分开报。

读者画像:评测负责人、算法工程师、要上线 Agent 的应用开发者。真实采用方:τ 系列(τ-Bench / τ²-Bench / τ³-Bench)已是客服 / 技术支持类 Agent 可靠性评测的事实标准,Sierra 本身就是做生产级客服 Agent 的厂商,1.9k★、2026-08 仍在提交,企业界广泛用于上线前回归。


2. 实现路径与步骤(重点,照抄可跑通)

目标:三天内跑通"mock 零成本自测 → 真实域出 pass^k"的最小闭环。全程不需要 GPU,但需要能调 LLM 的 API(走 LiteLLM)。

步骤 1 · 环境准备(~30 分钟,零 GPU)

# 1) 装 uv(任意方式,官方脚本)curl -LsSf https://astral.sh/uv/install.sh | sh# 2) 克隆并进入git clone https://github.com/sierra-research/tau2-benchcd tau2-bench# 3) 同步依赖(core 已含 airline/retail/telecom/mock 四域文本模式)uv sync# 4) 配密钥:底层走 LiteLLM,任何受支持提供商都行cp .env.example .env#   编辑 .env,填入例如 OPENAI_API_KEY=...

环境硬约束:Python 必须 >=3.12, <3.14(uv 会处理,但本机若有多版本要留意);语音模式另需 brew install portaudio ffmpeg(本期不用)。

怎么算这步成功uv run tau2 intro 能列出可用域(mock / airline / retail / telecom / banking_knowledge)和命令,说明装好了。

步骤 2 · 零成本自测闭环(mock 域,1 trial)

uv run tau2 run --domain mock \  --agent-llm gpt-4.1 --user-llm gpt-4.1 \  --num-trials 1 --num-tasks 5
  • --domain mock:内置模拟域,不依赖外部业务后端,最快验证整条链路能跑、密钥通、结果能落盘。
  • 跑完结果在 data/simulations/,用 uv run tau2 view 浏览每轮的 tool call、用户消息和最终环境状态。

怎么算成功:能看到 5 个任务的轨迹 JSON 和一个汇总(pass^1 数字)。这一步零业务数据、几乎零成本,专门用来排环境坑。

步骤 3 · 跑真实域并算 pass^k(需 API)

# airline 域,官方约定 4 trials、temperature=0,用于算 pass^k 可靠性uv run tau2 run --domain airline \  --agent-llm gpt-4.1 --user-llm gpt-4.1 \  --num-trials 4 --num-tasks 50 --temperature 0
  • 官方 leaderboard 用 4 trials / temp 0 / message_limit 100。要拿"可靠性"就必须多 trial——pass^k 之所以成立,靠的是同一任务跑 k 次。
  • 换域只需改 --domainretail(114) / telecom(双控,114) / banking_knowledge(需先 uv sync --extra knowledge)。

怎么算成功:输出里每个任务有 4 次 trial 的 0/1 结果;把"4 次全成功"的任务比例算出来,就是该任务的 pass^4(即 leaderboard 口径的可靠性)。

步骤 4 · 接入你自己的 Agent(替换默认 tool-calling)

默认 --agent-llm 走的是内置 tool-calling solver。要评你自研 Agent,实现 src/tau2/agent/ 下的接口,或参考 examples/agents/

# 最小契约:给定当前消息历史 + 环境工具 schema,返回带 tool_call 的回复defmy_agent(messages, tool_schemas):    resp = client.chat.completions.create(        model=MY_MODEL, messages=messages, tools=tool_schemas)return resp.choices[0].message

把你的 Agent 包成这个契约后,用 --agent-llm 指向它(或改 orchestrator 注册),就能在同一环境 / 同一用户模拟器下和 GPT-4.1 同台对比——这正是"模型 vs 框架 vs harness"解耦的评测纪律(见我们 AgentCompass 那期)。

步骤 5 · 程序化重算 pass^k(最小片段,零成本验证指标定义)

不用调任何 API,先把这个指标本身吃透:

import numpy as npdefpass_metrics(r, k=4):"""r: 同一任务的 k 次 trial 结果列表, 元素 ∈ {0,1}"""    r = np.asarray(r, dtype=int)    pass1 = r.mean()                       # 平均成功率(覆盖)    passk = 1.0if r[:k].sum() == k else0.0# 单任务: k 次全成功=1 否则 0return pass1, passk# 例: 某任务 4 次 = [1,1,0,1]p1, pk = pass_metrics([1,1,0,1], k=4)print(p1, pk)   # 0.75  0.0   <- 平均 75%, 但"连续 4 次都成"=0%

关键直觉:pass^1=0.75 看着不差,但 pass^4=0——意味着这个 Agent 在 4 次尝试里至少有一次会翻车。对要上线的客服系统,你关心的是后者。

步骤 6 · 成本估算(粗估,按 gpt-4.1 量级)

每个任务 = num_trials × 多轮对话 ×(agent + user 两个模型) 的 token 消耗。真实域单任务典型 10~20 轮交换。

配置
任务数
trials
约 LLM 调用
约费用(gpt-4.1 量级,估)
mock × 5
5
1
~150
≈ ¥0(可本地/极低成本)
airline 全量
50
1
~1,500
~¥几十
airline 全量
50
4
~6,000
~¥数百
retail 全量
114
4
~13,000
¥数百

注:精确数字随模型、轮数、域长度浮动,上表为量级参考。telecom 双控域因交互更长,单位成本更高。

关键超参表

参数
默认/建议
调大影响
调小影响
--domain
mock(自测)/ airline(真实)
换任务分布与难度
--num-trials
1(快验)/ 4(官方 pass^k)
可靠性估计更稳,成本×k
只能看 pass^1,pass^k 不可信
--num-tasks
5(自测)/ 全量 50~114
统计更稳,成本↑
方差大、座次不稳
--agent-llm
gpt-4.1
更强模型分更高、成本↑
更便宜但可能暴露更多失败
--user-llm
gpt-4.1
用户更像人,分数变
仪器效应
:用户更笨分数也变,必须披露
--temperature
0(官方)
>0 增方差、pass^k↓

常见报错与规避

  • command not found: tau2 / uv 没生效 → 用 uv run tau2 ... 而非裸 tau2;确认 uv sync 成功。
  • LiteLLM model not found / 401 → .env 里 key 没填或 provider 名不对;LiteLLM 路由名要和 .env 一致。
  • Python 版本报错 → 必须 3.12~3.13;用 uv 自带的 Python 或 pyenv 切。
  • 分数和 taubench.com 对不上 → 不是 bug,是 user-llm 不同带来的 harness 效应(呼应我们 Harness-Bench 那期);换用户模拟器等于换了测量仪器,结论必须标注 user-llm 版本。
  • banking_knowledge 跑不起来 → 需先 uv sync --extra knowledge(RAG 检索管线)。
  • 只盯着 pass^1 排座次 → 双控域下 pass^k 才是可靠性,pass^1 高不代表"每次都对"。

跑起来要花多少(小结)

  • 时间:环境 30 分钟;mock 自测分钟级;真实域全量 ×4 trials 视 API 速率,单域几十分钟到几小时。
  • 算力:零 GPU。
  • API 费用:单域全量 ×4 trials 约数百元(gpt-4.1 量级),可先用 --num-tasks 5 试水。

3. 原理讲解

3.1 为什么这样有效

传统客服 Agent 评测的两个脆弱点,τ²-bench 分别用两招堵死:

  1. 用程序化环境状态 oracle 替代 LLM judge。最终评分是 env.state 是否满足 eval 谓词(如 booking.seat_type == 'window'),是确定性的 0/1,不靠另一个 LLM 主观打分——这直接绕开了 LLM-as-judge 的各类 bias,也避免了 Goodhart(你没法靠"写得更像正确答案"去骗一个查数据库状态的判分器)。
  2. 用 LLM 用户模拟器替代人工标注。客服交互的真实用户太贵、太慢、太不可复现;用一个被"工具和可观状态"约束的 LLM 用户,既保留了多轮动态,又能无限次重放。

3.2 双控建模:为什么"用户在场"更难

把交互建模成 Dec-POMDP(去中心化部分可观测马尔可夫决策过程)

  • 世界里有一个共享、动态的环境状态(如航空订座数据库)。
  • Agent 有自己的 observation / action space(调业务工具)。
  • User 也有自己的 observation / action space(在双控域里,用户也能调工具改同一个状态,比如自己在 App 上确认)。
  • 两者只能看到局部信息,必须通过对话协调。

单控(原 τ-Bench)里 user 只是"答话的信息源",Agent 独享改世界的能力;双控(τ²-Bench telecom)里 user 也持工具。于是出现一类全新失败模式:Agent 推理对了,但没引导好用户去完成他那一半操作——论文的消融正是把"推理错误"和"沟通/协调错误"分开报的,且实验显示从 no-user 切到 dual-control,性能显著下降。

3.3 指标:pass^1 与 pass^k

每个 trial 给一个二值 reward r ∈ {0,1}(最终环境状态是否匹配目标)。

pass^1 = E[r]                         # 平均成功率(覆盖:做对几题)# pass^k: k 次独立 trial 全部成功的概率(可靠性:每次都对)pass^k = E[ 1( r_1=1 ∧ ... ∧ r_k=1 ) ]# leaderboard 约定 k=4、temperature=0,单任务估计:pass^k_task = 1.0 if all(r[:4]) else 0.0   # 多任务取均值

为什么 pass^k 比 pass^1 更该进 SLA:客服场景里一次失败代价极高(改错 DB、违规退款、惹投诉)。部署方关心的是"每次都成功的概率",而不是"平均成功概率"。pass^1=0.75 的 Agent,4 次里必翻一次;pass^4=0 意味着它不具备可靠性。这就是为什么论文和 leaderboard 把 pass^k 当主指标。

3.4 工程取舍

  • 用户模拟器保真度 vs 成本:更聪明的 user-llm 仿真更真,但更贵,且会改变分数(仪器效应)——所以必须固定并披露 user-llm
  • pass^k 需要多 trial:可靠性估计的方差随 k 增大而减小,但成本线性×k。实践用 k=4 平衡。
  • 解耦设计的价值:环境判定是确定性的、用户模型是可换的、任务生成是程序化的——三者解耦,你才能干净地回答"分低到底是模型菜、还是 harness 坑、还是任务难"(这正是 AgentCompass 强调的纪律)。

4. 效果验证与适用边界

4.1 量化结果(τ²-bench,官方设定:user=gpt-4.1,4 trials,temp 0)

模型 / 设定
数据集 / 环境
指标
基线
本文结果
数据来源
GPT-4.1
τ² retail
pass^1
≈74%
论文 / leaderboard
GPT-4.1
τ² airline
pass^1
≈56%
论文 / leaderboard
GPT-4.1
τ² telecom(双控)
pass^1
≈34%
论文 / leaderboard
同模型
telecom:no-user → dual-control
pass^1 变化
no-user
显著下降
论文消融
任意 Agent
同环境换 user-llm
分数漂移
gpt-4.1
随 user 变
harness 效应

注:上述分域 pass^1 为论文报告量级,精确值随 user-llm 配置与评测日期浮动(telecom 在不同 retrieval/config 下差异明显),引用时务必标注 user-llm 与配置。

4.2 业务收益(单列说明)

  • 上线前量化可靠性:用 pass^k 直接当 SLA 依据("连续 4 次都做对的概率"),替代"拍脑袋觉得 demo 行"。
  • 免去真人回归:用户模拟器 + 程序化 oracle 让回归测试可无限重放、可 CI 化,省下人工客服抽检成本。
  • 错误可归因:把失败拆成"推理错 / 沟通协调错",指导是练模型还是改提示词 / 交互设计。
  • 跨 scaffold 横向对比:同一环境同一用户模拟器下比不同 Agent 实现,座次才有意义。

4.3 决策清单(什么条件下成立 / 失效)

  • ✅ 成立:你有工具调用型客服 / 技术支持场景,且部署前需要量化可靠性、定位协调失败、做跨实现选型。
  • ❌ 失效 / 退化:纯知识问答(无状态变更、无用户动手)、或只需单轮 completion 的场景——τ²-bench 的强项恰恰在"多轮 + 共享状态 + 双控",用错了域就是杀鸡用牛刀。
  • 🔁 换业务需重新验证:非客服域(如代码、数据分析)τ² 没有现成环境,你得自己搭"工具集 + 策略文档 + 程序化 oracle",这是主要工作量。
  • ⚠️ 已知局限:用户模拟器存在偏差(仪器效应,必须固定披露);telecom 双控域局限在客服类交互;pass^k 依赖多次 trial,成本随 k 升。
  • 🔒 合规风险:策略合规(如"未经取消不得退款")靠 oracle 校验,但隐私 / 监管敏感场景仍需人工复核,不能全信自动判分。

复现清单

① 上手三步走

  1. uv sync 装依赖 + cp .env.example .env 填 LiteLLM key。
  2. uv run tau2 run --domain mock --agent-llm gpt-4.1 --user-llm gpt-4.1 --num-trials 1 --num-tasks 5 跑通零成本自测。
  3. 换 --domain airline --num-trials 4 出 pass^k;用本文 §2 步骤 5 的片段程序化复算指标。

② 踩坑记录

  • user-llm 是"测量仪器",换了分数就变,结论必须标注 user-llm 版本(harness 效应)。
  • telecom 双控域分数天然最低,不是你 Agent 菜,是"引导用户"本就难。
  • Python 必须 3.12~3.13;banking_knowledge 需 uv sync --extra knowledge
  • pass^1 高 ≠ 可靠,看 pass^k。

③ 实用评分卡

维度
评分
备注
可复现性
★★★★★
全开源 MIT、命令明确、mock 零成本自测
上手成本
★★★★☆
需 uv + LiteLLM key,无 GPU
算力门槛
★★★★★
零 GPU,纯 API 调用
效果可信度
★★★★☆
程序化 oracle 确定性判分,但 user-llm 有仪器效应
许可友好度
★★★★★
MIT,可商用、可改

④ 关键源码 / 论文链接

  • 仓库:https://github.com/sierra-research/tau2-bench[1]
  • 论文:https://arxiv.org/abs/2506.07982[2]
  • 排行榜:https://taubench.com[3]
  • 前驱 τ-Bench:https://github.com/sierra-research/tau-bench[4]

今日反问

为什么衡量一个要上线的客服 Agent,pass^k(k 次尝试全成功的概率)比 pass^1(平均成功率)更该写进 SLA——毕竟后者看着"更漂亮"?

引用链接

[1]https://github.com/sierra-research/tau2-bench

[2]https://arxiv.org/abs/2506.07982

[3]https://taubench.com

[4]https://github.com/sierra-research/tau-bench

随机文章