我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

Java转AI Agent教程(第七周)路由与兜底

Java转AI Agent教程(第七周)路由与兜底 W7 · Routing混淆矩阵与兜底本周交付Intent6 类drill w730 条标注样本 混淆矩阵 阈值扫描预计耗时主块 4h设计意图体系 0.5h / 标注样本 1.5h / 写演练 1h / 分析 1h前置W6 通过bash run.sh drill w6绿1. 一句话给分类器一个我可以说不知道的出口然后用混淆矩阵和阈值曲线把错在哪一边摊开给业务方看。2. 为什么必须有 UNKNOWN没有兜底类别的分类器一定会自信地分错。你给 5 类用户问你们公司还招人吗模型不会说我不知道它会挑最接近的那一类——大概是商品咨询。然后这条不该被处理的请求就进入了商品咨询的处理路径走完全程给出一个煞有介事的回答。UNKNOWN 的作用就是给模型一个合法的出口。但这个出口有两个硬要求必须存在枚举里有它必须能被真实触发W7 验收触发 ≥ 3 次第二条容易被忽略。如果你的样本里全都是典型售后问题UNKNOWN 永远不触发这条分支等于没测过——上线后第一次遇到闲聊就直接裸奔。3. 为什么是 6 类分类粒度的上限由下游动作决定。每一类必须对应一个明确不同的处理路径如果两类走的是同一套动作那它们就该是一类。意图下游动作特殊规则REFUND 退款查订单 → 查政策 → 生成涉及钱W10 必须过护栏RETURN 退货查订单 → 查政策 → 生成涉及货流程不同LOGISTICS 物流异常查订单 →查轨迹→ 生成数据源不同PRODUCT 商品咨询查政策 → 生成不需要订单号COMPLAINT 投诉直接转人工自动回复激化矛盾成本远高于人工接一次UNKNOWN 无法归类直接转人工兜底单独说 COMPLAINThumanOnly()写死在枚举上不交给 prompt 判断。这类无论模型多准都不该自动处理的路径必须在代码里硬编码。4. 指标怎么定义这段要写进 README大多数人只报一个准确率。这个数字在这里没用因为它把三种完全不同的结果混成一种结果定义业务含义正确预测 标注正常处理错分预测成了某个具体意图但和标注不一致走了错的流程可能造成损失弃权预测为 UNKNOWN转人工没自动处理但也没出错对应的两个指标弃权率 弃权 / 总数 → 自动化的覆盖率体验错分率 错分 / (总数 − 弃权) →在它敢答的问题里错多少风险分母扣掉弃权才是诚实的准确率。把弃权算进分母算出来的 90%可能真实是70% 转人工 20% 全对。5. 验收cd教程/W1-W4/ecom-agent-labbashrun.sh drill w7实际输出脚本模型30 条样本混淆矩阵行 标注列 预测 REFUND RETURN LOGISTICS PRODUCT COMPLAINT UNKNOWN REFUND 4 . . . . 2 RETURN . 4 . . . 1 LOGISTICS . . 4 . . 1 PRODUCT . . . 4 . 1 COMPLAINT . . 1 . 3 1 UNKNOWN . . . . . 4 阈值 0.60正确 23 · 错分 1 · 弃权 6 错分率 4%错分/敢答的题· 弃权率 20% --- 阈值扫描 --- 阈值 弃权率 错分率 自动作答量 0.30 10% 7% 27/30 0.55 10% 7% 27/30 0.60 20% 4% 24/30 0.90 20% 4% 24/30 0.95 87% 0% 4/30 错分明细 你们发货太慢了 标注 COMPLAINT → 预测 LOGISTICS 弃权明细 退款到哪了 标注 REFUND → 转人工 物流太差了下次不买了 标注 COMPLAINT → 转人工 能不能便宜点 标注 PRODUCT → 转人工 ... W7 路由通过 4 / 失败 0判定标准错分率 20%当前 4%「无法归类」被真实触发 ≥ 3 次当前弃权 6 次混淆矩阵行和 样本数30至少 3 类意图被正确识别4.1 矩阵里的那一格说明了什么COMPLAINT → LOGISTICS那一格就是你们发货太慢了被判成物流问题。这句话里确实有发货两个字关键词规则把它吃走了。这就是矩阵的价值如果你只看错分率 4%你会觉得没问题看到这一格你会知道情绪表达 业务词是这类句子的固定模式应该在 prompt 里加一条 few-shot。4.2 阈值扫描这不是调参是业务决策阈值从 0.60 提到 0.95弃权率从 20% 涨到 87%错分率只从 4% 降到 0。高阈值买到的是安心不是准确它把大量本来答对的题也转给了人工。转人工有成本人力错答也有成本赔偿、投诉两条线的交点在哪只有业务方知道。你的职责不是替他选而是把两条线的代价算清楚端上去。6. 本周踩的坑坑 1第一版混淆矩阵是一条完美对角线。25 条样本全对、错分 0、弃权 2。看起来很棒实际是自己考自己——我的关键词规则和标注是我一个人写的规则怎么划标注就怎么标。修法是加 5 条难样本专门挑关键词规则会栽的句子物流太差了下次不买了 标注 COMPLAINT规则判成 LOGISTICS 你们发货太慢了 标注 COMPLAINT规则判成 LOGISTICS 能不能便宜点 标注 PRODUCT规则判成 UNKNOWN 客服说三天到现在还没到 标注 LOGISTICS规则判成 UNKNOWN 东西质量不行我要退 标注 RETURN规则判成 UNKNOWN加上之后矩阵才有非对角线的格子才说明这套评测能发现问题。这一条比代码重要对角线矩阵不是好消息是评测集太简单。坑 2歧义样本不能藏。退款到哪了同时命中 REFUND 和 LOGISTICS。我一开始想把它删掉“太吵了”后来留下了标注 REFUND接受它被弃权。真实语料里这类占比很高藏起来只会让你的线上表现比评测差。坑 3以为 UNKNOWN 触发靠模型说不知道。实际上是三条路径都可能落 UNKNOWN无关键词0.30、多意图竞争0.55 被阈值拦、模型明确返回 UNKNOWN。三条都要有样本覆盖。7. 自检清单能画出自己的 6×6 混淆矩阵并指出最大的非对角线格子能解释错分率和弃权率的分母为什么不同能说出为什么 COMPLAINT 要写死在代码里而不是交给 prompt阈值扫描能跑出至少 3 行并能对着数字讲清取舍drill w7全绿w7-routing.csv已经生成用 Excel 打开看过8. 下一步到这里链路能跑、路由能分、错误能定位。但有一个问题一直没解决如果模型不收敛怎么办死循环是 Agent 系统里最经典的事故一轮 3 秒用户等 30 秒看到超时而你的日志里每一条都正常。W8 用四道刹车解决它。
返回列表