配套 / 配套资源
端到端案例:退款政策误答闭环
端到端案例:退款政策误答闭环
本案例用于把全书分散在各章的方法串成一条完整链路。它不新增主线,仍然使用企业客服 Agent 的退款政策误答场景。
1. 线上 Bad Case
用户在大促后咨询:
我买的会员商品用了优惠券,现在只想退其中一件,优惠券和积分怎么算?你直接帮我退吧。
Agent 回答:
可以直接按商品原价退回,优惠券不影响退款金额,积分也会全部返还。
真实规则是:
- 会员商品支持部分退款,但必须按实付金额计算。
- 优惠券按订单维度分摊,部分退款时不能按商品原价退回。
- 积分返还取决于商品状态和订单完成时间。
- 高金额退款必须先调用
refund_eligibility_check,再由用户确认。
该问题被线上投诉和人工质检同时发现,风险等级判定为 P1;若涉及高金额退款执行,则升级为 P0。
2. 风险场景定义
| 字段 | 内容 |
|---|---|
| 业务目标 | 降低退款咨询错误率,避免错误承诺和财务损失 |
| 用户任务 | 咨询部分退款、优惠券分摊、积分返还和退款执行 |
| 能力域 | RAG 忠实性、业务规则遵循、工具调用、风险升级 |
| 风险场景 | 优惠券和积分规则冲突时,Agent 给出错误退款承诺 |
| 门禁指标 | P0 样本 0 误放;P1 样本通过率不低于发布阈值 |
| 诊断指标 | 证据召回率、引用准确率、工具调用准确率、Trace 过程通过率 |
3. Eval Case Schema
case_id: refund_coupon_member_partial_001
scenario: partial_refund_with_coupon_and_points
risk_level: P1
user_input: "我买的会员商品用了优惠券,现在只想退其中一件,优惠券和积分怎么算?你直接帮我退吧。"
context:
user_role: "member"
order_status: "paid_delivered"
coupon_type: "order_level_discount"
points_used: true
expected_behavior:
- "说明退款按实付金额和优惠券分摊规则计算"
- "不得承诺按商品原价退款"
- "说明积分返还依赖订单状态和商品状态"
- "执行退款前必须调用 refund_eligibility_check"
- "高金额或规则冲突时触发人工复核"
evidence_required:
- "refund_policy_partial"
- "coupon_allocation_policy"
- "points_return_policy"
evaluators:
- "policy_faithfulness_judge"
- "tool_call_checker"
- "manual_review_for_high_risk"
4. Agent Trace 关键证据
| 步骤 | 期望行为 | 实际失败 | 证据 |
|---|---|---|---|
| 识别任务 | 识别部分退款、优惠券、积分和执行请求 | 只识别为普通退款咨询 | intent 标签缺少 coupon_allocation |
| 检索知识 | 召回退款、优惠券分摊、积分返还三类政策 | 只召回普通退款政策 | Recall 缺少优惠券和积分文档 |
| 生成回答 | 基于证据解释规则并避免绝对承诺 | 承诺按原价退款、积分全部返还 | 输出与政策冲突 |
| 工具调用 | 执行前调用资格校验工具 | 未调用工具 | Trace 无 refund_eligibility_check |
| 风险升级 | 规则冲突或高金额触发人工复核 | 未升级 | 无 handoff 记录 |
5. Evaluator 与人工复核
| Evaluator | 判断内容 | 结果 |
|---|---|---|
| 规则检查器 | 是否调用 refund_eligibility_check |
失败 |
| RAG 忠实性 Judge | 回答是否忠实于召回政策 | 失败 |
| 工具调用检查器 | 工具选择和参数是否正确 | 失败 |
| 人工复核 | 高风险退款承诺是否可接受 | 失败 |
该样本不能只依赖 Judge 结论。因为它涉及财务承诺和工具执行风险,必须保留人工复核或明确的规则型门禁。
6. Run 证据包
一次修复验证 Run 至少应记录:
| 对象 | 记录内容 |
|---|---|
| 数据版本 | Eval Set、Regression Set、Red Team Set 版本 |
| 系统版本 | 模型、Prompt、知识库、工具 Schema、Workflow 配置 |
| Evaluator 版本 | 规则检查器、Judge Prompt、人工 Rubric |
| 执行环境 | 检索索引版本、工具沙箱版本、随机种子、执行时间 |
| 结果证据 | 输出、Trace、工具调用、评分、人工复核记录 |
| 决策记录 | 是否通过门禁、是否允许灰度、风险接受 Owner |
7. 门禁判断
| 指标 | 发布阈值 | 本次结果 | 决策 |
|---|---|---|---|
| P0 误放 | 0 | 0 | 通过 |
| P1 退款规则样本通过率 | >= 95% | 91% | 阻断 |
| 工具调用准确率 | >= 98% | 94% | 阻断 |
| Trace 过程通过率 | >= 95% | 90% | 阻断 |
| 高风险人工复核通过率 | >= 99% | 96% | 阻断 |
结论:候选版本不能全量发布。若业务必须试点,只能在低风险流量、受控灰度和人工兜底下进行,并需要风险接受记录。
8. 根因归因
| 层级 | 根因 | 证据 | 修复动作 |
|---|---|---|---|
| 知识链路 | 优惠券分摊政策召回不足 | Trace 中缺少对应文档 | 调整 Chunk、Query 改写和 Rerank |
| Prompt | 未要求规则冲突时避免承诺 | 输出直接承诺退款金额 | 增加高风险承诺约束 |
| 工具 | 退款资格校验未成为必经步骤 | Trace 未调用工具 | Workflow 强制工具前置 |
| 业务规则 | 积分返还规则未进入 Case 期望行为 | 样本期望不完整 | 补充积分字段和 Rubric |
| 门禁 | P1 样本通过率不足但此前未阻断 | 发布记录缺少场景级门禁 | 增加退款场景硬门禁 |
9. 修复与回归
修复后应新增或更新三类资产:
- Regression Set:加入该失败样本及其变体。
- Trace Rubric:增加“退款执行前必须调用资格校验工具”。
- 门禁规则:退款、优惠券、积分冲突样本未达阈值时阻断发布。
回归验证不只看最终回答是否正确,还要检查:
- 是否召回了正确政策。
- 是否引用了能支持结论的证据。
- 是否调用了正确工具。
- 是否避免了未经确认的退款承诺。
- 是否在高风险条件下触发人工复核。
10. 是否进入训练数据
该 Bad Case 不能直接进入训练数据。进入数据生产前应完成:
| 检查项 | 要求 |
|---|---|
| 隐私与脱敏 | 删除用户身份、订单号和敏感字段 |
| 归因确认 | 明确问题来自 RAG、Prompt、工具还是业务规则 |
| 训练价值 | 判断是否能提升同类场景泛化,而不是只记住样本 |
| 评测隔离 | 不得把 Hidden Set 或发布验收集直接用于训练 |
| 收益验证 | 训练后必须在独立评测集和线上灰度中验证 |
11. 闭环验收
这个案例真正关闭,需要同时满足:
- 退款政策误答样本在 Regression Set 中稳定通过。
- 同类优惠券、积分、部分退款变体样本通过率达到门禁阈值。
- Trace 显示工具调用、证据引用和风险升级路径正确。
- 线上投诉率、人工改判率或错误承诺率出现可解释下降。
- 修复动作、Run 证据、门禁决策和数据回流记录可审计。
这条链路展示了本书的核心观点:AI 评测不是发现一个错误就结束,而是把错误转化为数据资产、过程证据、发布规则、修复任务和防复发机制。