
























用户说“薯片碎了”,客服机器人回“亲,是要买薯片吗?”——这不是段子,是我们上线第一周的真实翻车。今天我就把意图识别这个坑,从本质到方案,彻底讲透。

意图识别决定客服是“智能”还是“智障”。别只靠关键词匹配,也别盲目上大模型生成。
我的方案:大模型做NLU(意图分类+实体抽取)+ 确定性代码执行,准确率92%,延迟300ms。
我们智能客服MVP上线第二天,一位用户发来:“薯片碎了,我要退款。”
我们的意图识别模型输出:intent: “buy_product”(购买商品),因为模型把“薯片”当成了购买意向,“碎了”被忽略了。
机器人回复:“亲,薯片正在热卖中,点击链接购买哦~”
用户直接炸了:“我说碎了!不是要买!你们是机器人还是傻子?”
客服总监截图发到群里:“这谁做的?给我解释一下。”
问题出在哪? 我们的意图识别模型,只做了简单的关键词匹配,没理解“碎了”这个核心意图词。更糟糕的是,我们没做实体抽取,导致“薯片”被误判为商品购买,而不是问题商品。
说白了,意图识别就是分类——把用户的自然语言,映射到你提前定义好的业务意图集合里。
在零食客服场景,我们定义了 12 个一级意图:

核心公式:用户输入 → 意图分类 + 实体抽取 → 槽位填充 → 业务动作
如果第一步意图就分错了,后面全白费。

我为什么选大模型做NLU,而不是BERT或纯规则?
4.1 设计意图体系(产品经理必须亲自干)
我拉着客服主管,花了三天,把过去3个月的 3个G 的对话翻了一遍,归纳出 8 个一级意图、30+个二级意图。
示例:
一级意图 complaint(投诉)
二级:broken(破损)、quality(品质)、leak(漏发)、expired(临期)
原则:
用户说“薯片碎了,订单号12345,我要退款”,我们需要抽取出:

我们设计了一个prompt模板,强制大模型输出固定JSON格式:
你是一个意图识别助手。从用户输入中提取意图和槽位。
意图列表:query_order, query_points, apply_refund, complaint_broken, …
槽位定义:order_id, product_name, issue_type, …
用户输入:{{user_input}}
输出JSON:
{
“intent”: “意图值”,
“slots”: {“槽位名”: “值”},
“confidence”: 0.95
}
意图和槽位都有了,接下来是对话管理。我们写了一个轻量级状态机:
这样用户不会觉得AI傻,反而觉得它在认真处理问题。

这些我们后续通过多轮记忆系统和知识库RAG逐步解决。
很多团队把意图识别全丢给算法工程师,结果就是翻车不断。我的经验是:
下一步:有了意图,还得有知识。下一篇我们讲《向量知识库五步法:从“答非所问”到“精准回复”》。
本文由 @嘻嘻李 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。