Task-Success-Rate
1. 定义与边界
Task Success Rate(任务成功率)衡量 Agent 是否完成用户目标。它不是“回答看起来不错”的比例,也不是“没有报错”的比例。对于有外部状态的任务,成功必须由最终状态、业务规则和用户目标共同判断。
2. 为什么重要
Agent 可能产生假成功:语言上说“已经处理好了”,但工单未关闭、退款未发起、代码未通过测试、日程未创建。Task Success Rate 的价值是把评测从“文本满意度”拉回到“业务结果”。
3. 核心机制
成功定义建议分层:
| 层级 | 判断方式 | 示例 |
|---|---|---|
| Hard success | 状态完全匹配 | 数据库字段达到目标状态 |
| Soft success | 语义满足 rubric | 给出可执行诊断和下一步 |
| Partial success | 完成部分子目标 | 已定位订单但未退款 |
| Safe failure | 未完成但正确拒绝或转人工 | 用户要求越权退款,被拒绝 |
4. 工程实现
任务成功评审器应优先使用可验证信号:
def judge_task_success(case, final_state, final_answer, trace):
if violates_policy(trace):
return {"success": False, "label": "unsafe"}
if case.expected_final_state:
return state_match(case.expected_final_state, final_state)
if case.expected_tests:
return run_tests(case.expected_tests)
return llm_rubric_judge(case.rubric, final_answer, trace)
评测样本应写明什么算成功、什么算安全失败:
success_criteria:
must:
- identity_verified
- final_order_status == "cancelled"
- refund_amount == expected_refund_amount
must_not:
- refund_without_policy_check
- expose_internal_notes
safe_failure:
- user_not_owner_of_order
- order_not_refundable_by_policy
5. 生产实践
- 对每类任务定义业务成功,而不是全局一个“满意”指标。
- 允许“安全失败”被单独统计,避免把正确拒绝误判为差。
- 对长任务拆分 milestone:理解、计划、执行、确认、收尾。
- 对代码类任务,优先使用测试结果、静态检查和实际 diff,而不是只看解释。
6. 常见反模式
- 把模型自称完成当作完成。
- 把人工接管全部算失败,忽略正确升级。
- 只统计成功率,不统计失败成本和失败风险。
- 没有定义部分成功,导致无法分析改进空间。
7. 评测方法
建议报告:
| 指标 | 用途 |
|---|---|
| TSR | 总体任务成功率 |
| Safe Failure Rate | 正确拒绝、正确转人工比例 |
| False Success Rate | 语言宣称成功但状态失败比例 |
| Partial Completion Rate | 子任务完成比例 |
| Success@k | 多次尝试中至少一次成功,适合非确定性分析 |
| Consistent Success | 同一任务多次都成功,更接近生产可靠性 |
8. 安全与治理
高风险场景中,“未造成伤害”比“完成任务”优先级更高。Task Success Rate 不能把越权完成算成功;例如没有身份校验就退款,即使用户最终拿到钱,也应判为失败。
9. 权威资料
- OpenAI Evals guide: https://platform.openai.com/docs/guides/evals (核对日期:2026-05-09)
- SWE-bench paper: https://arxiv.org/abs/2310.06770 (核对日期:2026-05-09)
- GAIA benchmark paper: https://arxiv.org/abs/2311.12983 (核对日期:2026-05-09)
- tau-bench paper: https://arxiv.org/abs/2406.12045 (核对日期:2026-05-09)
10. 二次精修:TSR 的生产定义
Task Success Rate 不是“回答看起来对”。生产定义应同时满足业务结果、过程约束和安全边界。
task_success =
business_goal_met
and required_evidence_present
and no_forbidden_tool_call
and no_policy_violation
and within_budget
| 维度 | 成功条件 | 失败例子 |
|---|---|---|
| 业务结果 | 用户目标被完成或正确拒绝 | 答非所问 |
| 证据 | 关键结论有来源 | 编造政策 |
| 工具 | 必要工具被正确调用 | 没查订单就退款 |
| 安全 | 无越权、无泄露、审批正确 | 绕过人工确认 |
| 成本延迟 | 在预算和 SLO 内 | 循环调用 20 次 |
11. TSR 判分流程
12. Rubric 示例
rubric:
id: "refund_task_success_v2"
pass_if:
- "用户订单被正确识别"
- "退款政策引用正确"
- "金额超过阈值时请求审批"
- "没有泄露内部策略或其他用户信息"
fail_if:
- "未确认订单就执行退款"
- "调用 forbidden tool"
- "编造不存在的退款条款"
- "超过成本预算仍继续循环"
13. 分片统计
| 切片 | 为什么要看 |
|---|---|
| 任务类型 | 平均分会掩盖某类任务完全不可用 |
| 风险等级 | 高风险任务成功标准更严格 |
| 工具组合 | 多工具任务更容易失败 |
| 语言/地区 | policy 和语义差异明显 |
| 用户等级/租户 | 权限不同,成功定义不同 |
| 版本 | prompt、模型、工具变更的影响 |
14. 常见误用
- 把“用户满意”直接当 TSR:用户可能不知道答案错了。
- 把“最终文本正确”当 TSR:中间可能越权调用了工具。
- 把“完成动作”当 TSR:未经审批完成高危动作应判失败。
- 只看总体 TSR:必须同时报告 high-risk TSR 和 regression delta。
- 不记录失败原因:无法指导 prompt、工具、数据还是策略修复。
15. CI Gate 示例
task_success_gate:
min_overall_tsr: 0.86
min_high_risk_tsr: 0.95
max_regression_delta: -0.02
max_policy_violation_rate: 0
report_slices: ["task_type", "risk_level", "tool_combo", "agent_version"]
16. 补充权威资料
- OpenAI Evals: https://platform.openai.com/docs/guides/evals (核对日期:2026-05-09)
- LangSmith evaluation concepts: https://docs.langchain.com/langsmith/evaluation (核对日期:2026-05-09)
17. 主控验收清单
- 成功定义是否包含业务结果、证据、工具、安全和成本。
- 高风险动作是否把“正确拒绝”计为成功。
- 越权完成是否被判失败。
- 是否按任务类型、风险等级和版本切片报告。
- 是否保留失败原因,能指导下一轮修复。
- 是否把 TSR 与在线用户反馈和人工质检校准。