微信机器人如何实现AI意图识别?从置信度校准到拒识机制的工程方案
发布时间:2026/9/23 16:44:56 作者:尧图编辑部 阅读量:1,286

意图识别模型上线后最容易暴露的问题不是准确率不高是错了还很自信。一句无关闲聊被模型以95%的置信度判成售后投诉触发了错误的分流和工单创建——这种高置信误判比识别不了危害大得多。生产级意图识别的核心不是追求100%准确是让模型知道自己什么时候不知道并且新意图上线时能低成本冷启动。一、置信度校准——让模型的分数敢用来决策分类模型输出的置信度分数往往虚高——它表示的是类别间的相对倾向不是真实的正确概率。直接拿0.8当阈值做分流决策实际正确率可能只有0.6。置信度校准把原始分数映射成真实概率用一批人工标注的验证集统计分数0.8附近的样本实际正确率是多少建立校准曲线把原始分数修正成可信概率。校准后置信度才敢用于分级决策置信度0.9以上自动处理0.6到0.9之间进入澄清确认——机器人反问您是想查物流还是办理退货用客户回答二次确认低于0.6直接走兜底转人工或引导描述问题不强行分类。置信度本身也要持续监控——线上分布漂移时客户开始大量问新业务校准曲线会失效需要定期用新标注数据重新校准。二、拒识机制——识别不了比乱分类好用户的消息永远有一部分不属于任何预定义意图闲聊、吐槽、问天气、发无意义内容。没有拒识能力的模型会把这些消息硬塞进最相近的意图制造大量误处理。拒识机制专门识别这不是我能处理的业务意图拒识后走通用回复或人工而不是错误分流。拒识有两种技术路径。判别式拒识训练时加入其他意图类别用真实闲聊和噪声样本做负例让模型学会这些不属于业务类。阈值式拒识所有意图置信度都低于阈值时判为未知。生产环境两者结合——其他类概率高或全部类概率低都触发拒识。拒识的消息不是扔掉是进未知意图收集箱人工审核后发现其中反复出现的新需求就是下一批要新增的意图——拒识箱是意图体系迭代的需求来源。三、少样本冷启动——新意图没有标注数据怎么办业务不断变化新意图新业务上线、大促新玩法上线时往往只有几条样本传统分类器根本训不起来。大模型时代的冷启动靠语义相似度少样本提示不训练新分类器把新意图的定义和3到5条示例写进提示词模型基于语义理解直接判断。少样本的质量比数量重要——示例要覆盖这个意图的典型说法和边界情况3条好示例胜过30条重复样本。冷启动期的新意图走影子模式识别结果不直接用于分流只记录如果按新意图处理会分去哪里人工对比实际处理结果。影子运行一两周、识别准确率验证达标后再切正式流量。正式上线后持续把线上命中的样本沉淀为训练数据样本量过百后可以切换成微调专用模型成本更低速度更快。三个机制对照机制解决的问题落地方式置信度校准分数虚高不敢用标注验证集校准曲线分级决策拒识机制无关消息硬分类其他类低阈值双路径收集箱少样本冷启动新意图没数据定义示例提示影子模式验证意图识别工程实现class IntentEngine: INTENTS { logistics_query: {desc: 查询物流进度, examples: [到哪了, 怎么还没发货, 快递状态]}, return_request: {desc: 申请退货退款, examples: [想退货, 退款怎么弄, 不想要了]}, } def classify(self, text): raw llm_classify(text, self.INTENTS) # 置信度校准原始分→真实概率 probs self.calibrator.transform(raw.scores) best max(probs, keyprobs.get) # 拒识其他类高 或 全部偏低 if probs.get(other, 0) 0.5 or probs[best] 0.6: db.collect_unknown(text, probs) # 进未知收集箱 return IntentResult(intentunknown, confidenceprobs[best], actionhuman_or_general) # 置信度分级 if probs[best] 0.9: return IntentResult(best, probs[best], auto) return IntentResult(best, probs[best], clarify) def add_intent_shadow(self, name, desc, examples): 新意图影子模式只记录不生效 self.INTENTS[name] {desc: desc, examples: examples, mode: shadow} def shadow_check(self, text, real_result): for name, cfg in self.INTENTS.items(): if cfg.get(mode) shadow: pred llm_few_shot(text, cfg) db.save(shadow_log, { text: text, shadow_intent: name, shadow_pred: pred, real_intent: real_result.intent})落地建议建设顺序建议拒识机制先做——它能立刻消灭硬分类造成的明显错误投入最小置信度校准第二需要先积累一批人工标注数据几千条量级即可起步少样本冷启动等业务开始频繁加新意图时再建。配套的评估体系不能少固定一个人工标注的测试集每次模型或提示词调整后回归测试按意图分别看准确率、召回率和拒识率防止改好A意图改坏B意图。意图识别处理的消息来自 Eyun 平台 这类个人微信API平台的消息回调识别引擎在自建服务中运行文本、图片等不同消息类型的字段结构参考 Eyun 开发文档。