本文脱胎于支付宝 618 大促中一个真实意图识别模块的 5 天进化实录。我们从中提炼出可复用的设计哲学、端到端构建链路,以及一套将 Prompt 当模型训练的自动化 SOP。如果你正在建设面向开放域场景的意图识别系统,这篇文章会提供一份务实的工程参考。
引言:意图识别不是分类,而是翻译
在大模型时代之前,意图识别通常被当作一个封闭的分类问题——预设几十个标签,训练一个分类器,将用户输入映射到其中一个桶里。这在”订机票""查天气”这类封闭场景中有效。
但当意图识别被放到开放域的电商消费场景时(例如用户说”想买个蓝牙耳机,200 以内”),传统范式就失效了。用户的表达无穷无尽,且真实意图具备跨品类、流动性、甚至用户自己都说不清的特点。
支付宝 618 大促中的 AI 找优惠二期项目,将意图识别模块定位为全链路的 “翻译层”——它不持有 SKU 数据、不做推荐算法,只负责把用户的”人话”翻译成下游可消费的结构化查询:【意图类型, 优先级, 关键词, 用户描述摘要】。
这个系统从选型到上线只用了 5 天。它的价值不在于模型多强,而在于如何用工程化的方法,在有限的资源和极短的时间内,构建一个效果可用、且能持续进化的系统。
一、设计哲学:先立规矩,再谈技术
1. 意图识别是”翻译层”,不是”导购”
模块职责被严格收敛。开发团队在项目启动时就立下了”五大约束”,其中第一条就是 “别越界”——意图识别模块不碰商品数据和推荐算法,只做语义到结构化查询的翻译。
这一定位带来了两个好处:
- 职责单一,易于评测:模块的输入输出边界清晰,可以独立验证效果。
- 系统解耦,易于演进:下游的召回、排序、权益匹配可以独立迭代,不受意图模块的制约。
2. 四类意图 + 优先级驱动
意图被划分为四种类型,优先级自然浮现:
| 类型 | 含义 | 优先级 |
|---|---|---|
| ITEM | 明确商品(如”我要买蓝牙耳机”) | L1(最高,直接推荐) |
| BENEFIT | 明确权益/优惠(如”有满减券吗”) | L1(最高,直接推荐) |
| VAGUE | 有购物倾向但品类不明(如”想买个礼物”) | L2~L4,引导澄清直至 L1 |
| IRRELEVANT | 无关/闲聊(如”今天天气不错”) | 不推荐任何权益 |
优先级设计解决了”什么时候该推荐、什么时候该引导”的业务问题,也简化了下游系统的决策逻辑。
3. 五条选型约束(“快省准记得住别越界”)
模型选型不是追求”最好”,而是追求”最务实”。项目定义了五条硬约束:
- 快:首 token 1~2 秒内出结果(否则用户流失)。
- 省:618 大促流量巨大,按 token 计费的大模型预算扛不住。
- 准:四类意图的区分不是关键词匹配,模型必须理解语义。
- 记得住:上下文 32K 是底线(system ~5000 字 + 输入 50 + 输出 100 token)。
- 别越界:只做翻译,不碰商品/推荐。
在这五条约束下,团队在 4 小时内完成了模型选型:从 7 个候选模型中筛掉多模态模型(纯文本输入,视觉编码器闲置浪费显存)和嵌入模型(语义理解深度不足,且需维护向量库),最终锁定 Qwen3 纯文本系列的 4 个模型(8B/14B/两个 30B MoE)。
评测显示 14B 效果最好,但资源交付有风险(部署成本、推理时延),最终线上选择了 8B。作者总结:“不是因为 8B 完美,而是在所有约束条件下,它是最务实的选择。”
4. 用户体验至上(业务兜底原则)
当权益召回与用户输入不相关时,系统宁可识别为”无关意图”(IRRELEVANT),也不做”无关联商品兜底推荐”,以避免交互的割裂感。
“如果实在解决不了,上线后再解决也不大。”
这体现了项目对用户体验的极端重视,也降低了系统的容错压力。
二、构建链路:端到端 Pipeline
用户输入自然语言
↓
[意图识别模块 = 翻译层]
↓ 输出结构化: intentType + level + keywords + intentSummary
下游召回/匹配(权益 or 商品)
↓
推荐结果返回
具体的构建步骤(从 0 到上线,5 天完成):
- 问题定义:明确四类意图与优先级规则。
- 模型选型(4 小时):请教 3 个踩坑团队 → 收敛到 Qwen3 系列 → 排除多模态/嵌入 → 锁定 4 个纯文本候选。
- 先造高质量评测集,而不是先跑模型(“垃圾进、垃圾出”):
- 基于业务规则定向构造用例(覆盖边界、贴近真实口语、省略、错别字),而非线上随机采样。
- 歧义 case 直接剔除。
- 人工审查锁定”黄金用例集”(52 条)——标注可信度 > 数量。
- 候选模型评测:4 个模型各跑全部 case,统一调用脚本、统一 system prompt 与输入,唯一变量是模型本身。
- 四维评测:效果 / 时延 / 成本 / 上下文,一张表汇总对比。
- 系统提示词自进化(详见下文 SOP)。
- 上线前 badcase 处理:同步调整训练集 → 人工确认方向写粗版本 → Loop → 评测(评测标准同步修改)。
- 效果实验与收益验证(A/B 分组)。
三、SOP:提示词自进化的标准流程(最核心方法论)
手动调参的痛点在于:没有反馈回路,只有会疲劳的眼睛和会自我欺骗的大脑。某个 case 修好了,另两个又坏了。首版 prompt 加权得分 80.8,手动调参三四轮即崩溃。
系统的解决方案是:把 Prompt 当成模型来训练。
阶段 1:搭自动化闭环
将”跑评测 → 看分数 → 改 prompt → 再跑评测”交给程序自动循环:
- 框架自动扫描
reports/round_N/决定当前轮次,从prompts/system_prompt.md的 symlink 反推版本号。 - 进入评测 → 打分 → 收敛判断 → 改写四阶段循环。
阶段 2:引入 train/test 切分(治”背题”)
所有评测/打分/改写如果都在同一批数据上,Prompt 会慢慢”背答案”过拟合。解法是引入训练集与测试集:
- 训练集:用于发现 badcase、驱动改写。
- 测试集:不参与改写,每轮结束后独立评测,验证泛化。
- 收敛双门槛:train ≥ 90 且 test ≥ 92,同时达标才算收敛;train 涨 test 跌则标注”疑似过拟合”。
阶段 3:反过拟合的多层防线
改写器(由 GLM-5.1 / DeepSeek-V4-Pro 等聪明模型承担)收到”当前 prompt + 评分反馈 + badcase + 意图混淆模式”,生成改进版。四条硬规则:
- 案例服务于规则:多个 badcase 必须先抽象共同判定规则写进 Rules,严禁批量堆 few-shot 刷指标。
- 新增案例硬上限:每个失分维度/规则本轮最多新增 1 条示意性案例(只用于说明边界/反例,不穷举)。
- 区分 train/test 信号:
两端共现(train+test 都有)= 真实规则缺口 → 优先抽象成规则修复。仅测试集= 泛化不足 → 往”判定原理”上改。仅训练集= 大概率噪声/长尾 → 禁止为它单独加规则。
- 已达标维度原样不动:只改不满足的维度。
阶段 4:双轨评分体系(正确性 + 质量)
6 个打分维度,双轨并行:
- 规则打分(毫秒级):
intent_accuracy字符串比对、format_complianceJSON schema 校验——管”对不对”。 - LLM 打分(4 并发 100 条约 2-3 分钟):关键词提取、追问自然度、摘要准确度等需语义理解的维度——管”好不好”。
权重分配:业务最在意”意图别判错(30%)“和”关键词别提取歪(30%)“,合计近 60%(因为下游搜索/推荐完全依赖这两个字段)。
阶段 5:方向纠偏
当评估发现模型大方向走偏时(例如想在 Workflows 里新增”无关性初筛”Step,而非改整体 prompt),及时打断正在进行的 Loop,用 PromptOptimizer 优化器先写一版大方向正确的粗版本,纠偏后再继续执行 Loop。
四、效果实验与业务启示
实验设计:普通版为 baseline,按互动深度分三组——自动首推组 / 预设按钮交互组 / 自定义对话组,观测 CTR 与人均价值贡献的相对变化。
核心发现:
- 自动首推 alone 无正向转化:商品点击率较 baseline 降约 11.8%,人均价值贡献降约 8.3%。
- 用户主动互动是转化核心驱动力:从被动接收转为主动交互,两项指标显著正增长。
- 互动深度与转化效率正相关:自定义对话组(最深交互)商品点击率达普通版 3.7 倍,人均价值贡献达 2.1 倍。
业务启示:
- 不建议单独依赖自动首推承接转化。
- 应重点引导用户进入主动交互(预设按钮、自定义对话降低表达门槛)。
- 自定义对话是效率最高的转化场景,资源有限时优先建设。
五、踩坑方法论(可迁移经验)
- 重复 3 遍就要造轮子:AI 时代造轮子成本大幅降低(对 coding agent 说一句话 30 秒出脚本)。例如,跑增量单元测试的脚本(diff 分支后只跑改动的 Java 类);评测结果可视化脚本(把 JSON 报告生成趋势图/雷达图,避免每次手翻对比)。
- Switch Context 累但值得:5 天里长期多窗口并行(Java 开发 / 调优框架 / 跑评测)。AI 时代角色从”执行者”变”调度者”,吞吐量取决于能同时让多少个 AI 在正确方向运转。
- 保持热情 + 动手能力是 AI 时代最难能可贵的技能;保持谦逊、务实、专注。
六、对意图识别系统建设的可借鉴要点
- 职责边界先行:明确意图识别只做”翻译”,越界即失败。
- 评测集比模型更重要:先造可信度高的”黄金用例集”(定向构造 + 人工精标 + 边界优先),再选模型。
- 以约束筛选模型(快/省/准/上下文/不越界),选”最务实”而非”最佳”。
- 把 prompt 当模型训练:train/test 切分 + 双门槛收敛 + 反过拟合规则,彻底解决”手动调参无反馈”。
- 双轨评分:规则打分管”对不对”,LLM 打分管”好不好”,按业务权重加权。
- 上线前处理 badcase 的 SOP:调训练集 → 人工确认大方向 → Loop → 评测(同步改标准)。
- 用实验验证产品价值:以互动深度分组做 A/B,用数据证明”用户主动表达 > 被动推荐”。
结语
这个 5 天进化实录最有价值的地方,不在于它用了多么强的大模型,而在于它展示了一种工程化的 AI 系统构建方法论:明确边界、以评测集为核心驱动选择、将 Promot 优化流程化且反过拟合、并用实验验证业务假设。
对于正在建设意图识别系统(或类似 LLM 应用系统)的团队,这套方法和纪律,远比某个具体模型的选择更具复用价值。