多轮会话核心挑战在于上下文记忆、意图变化识别及指代消解,需结合对话状态跟踪(DST)与策略学习;推荐分层方案:规则兜底+轻量模型泛化+大模型增强,兼顾可控性与自然度。
单轮问答容易实现,但真实对话需要记住上下文、识别用户意图变化、处理指代和省略。比如用户说“它多少钱”,系统得知道“它”指上一句提到的手机;再比如用户中途改问“那笔记本呢”,要能切换话题并保留之前的筛选条件(如“预算5000以内”)。这背后不是靠简单关键词匹配,而是依赖对话状态跟踪(DST)和对话策略学习。
对业务场景明确的机器人(如订餐、查快递),推荐用基于规则的对话管理:定义有限状态(如等待菜品选择 → 等待地址确认 → 等待支付方式),每个状态绑定需收集的槽位(slot),如food_type、delivery_address。NLP模块负责从用户语句中抽取槽值,状态机决定下一步该问什么或是否可以执行动作。
spacy或jieba+正则做轻量级实体识别,比端到端模型更易调试纯靠规则难覆盖口语跳跃和隐含逻辑。可将最近3–5轮对话拼接为文本,用预训练语言模型(如bert-base-chinese)做联合编码,输出一个对话向量,输入下游分类器判断当前意图(如confirm_order、change_address、cancel)。关键点在于:历史文本要带角色标记([USER] / [BOT]),且每次只更新最新一轮,避免向量过长影响实时性。
Feature-based方式——取[CLS]向量接两层MLP,训练快、显存友好完全依赖深度学习模型会导致“不可解释、难修复、冷启动差”。实际项目中建议分层
设计:底层用规则兜底(如识别“退出”“返回上一步”等强指令),中层用轻量模型处理常见泛化表达(如“换个地址”“不要辣的”),上层留接口接入强化学习或大模型(如用LLM重写回复,但仅限非关键路径)。这样既保证核心流程100%可控,又能逐步提升自然度。