前面五天,我们学会了创建 Bot、使用插件、设计工作流、管理知识库。但你有没有发现,每次对话 Bot 都像"失忆"一样,不记得之前说过什么?这就是多轮对话(Multi-turn Conversation)要解决的问题——让 Bot 记住上下文,实现连贯、自然的对话体验。
一、什么是多轮对话
1.1 单轮 vs 多轮对话
对比示例
❌ 单轮对话(无记忆)
用户:"北京明天天气怎么样?"
Bot:"北京明天晴天,15-25度"
用户:"那后天呢?"
Bot:"请问您想查询哪个城市的天气?"(忘记了是北京)
问题:Bot 不记得上一轮说的"北京"
✅ 多轮对话(有记忆)
用户:"北京明天天气怎么样?"
Bot:"北京明天晴天,15-25度"
用户:"那后天呢?"
Bot:"北京后天多云,12-22度"(记住了是北京)
优势:对话连贯、自然,用户体验好
1.2 多轮对话的核心要素
上下文记忆
Bot 能记住之前的对话内容,包括用户说过什么、Bot 回复过什么。
指代消解
理解"它"、"那个"、"刚才说的"等指代词,知道用户在说什么。
话题延续
在同一个话题下持续对话,不会突然跳转到无关内容。
意图理解
结合上下文理解用户的真实意图,而不是孤立地看每一句话。
二、Coze 的对话记忆机制
2.1 会话(Session)概念
在 Coze 中,一次完整的对话称为一个会话(Session)。会话内的所有消息都会被记录,形成上下文。
会话的生命周期
会话开始
用户发送第一条消息,创建新会话
会话进行
用户和 Bot 持续对话,消息不断累积
会话结束
用户关闭对话窗口,或超过一定时间无互动(通常30分钟)
会话清除
会话历史被清除,下次对话从零开始(除非启用长期记忆)
2.2 上下文窗口
Bot 不会记住所有历史消息,而是保留最近的 N 条消息作为上下文窗口。
上下文窗口大小
默认设置
保留最近 10-20 轮对话(20-40 条消息)
为什么有限制?
• LLM 的输入长度有限(如 GPT-4 最多 8k tokens)
• 上下文越长,推理越慢,成本越高
• 太长的上下文会"稀释"重要信息
如何调整?
在 Bot 设置中,可以配置"上下文轮数",范围通常是 5-50 轮
💡 上下文窗口的权衡
窗口太小(5轮)
优点:响应快,成本低
缺点:很快忘记之前的内容,对话不连贯
窗口太大(50轮)
优点:记忆力强,对话连贯
缺点:响应慢,成本高,可能超出模型限制
推荐设置
• 客服场景:10-15 轮(够用且高效)
• 深度对话:20-30 轮(如咨询、辅导)
• 简单问答:5-10 轮(快速响应)
2.3 记忆类型
短期记忆(会话内)
默认只在当前会话内有效,会话结束后清除。
适用场景:
• 临时咨询(查天气、查快递)
• 一次性任务(生成文案、翻译)
• 不需要记住用户信息的场景
长期记忆(跨会话)
高级跨会话保存,即使用户下次再来,Bot 也能记住之前的信息。
适用场景:
• 个人助理(记住用户偏好、习惯)
• 学习辅导(记住学习进度、薄弱点)
• 客户服务(记住历史问题、订单)
结构化记忆(数据库)
高级将关键信息提取并存储到数据库,方便查询和管理。
适用场景:
• 用户画像(姓名、年龄、职业、偏好)
• 订单管理(订单号、状态、金额)
• 任务跟踪(待办事项、完成状态)
三、配置多轮对话
3.1 基础配置
1️⃣启用会话记忆
• 进入 Bot 编辑页面
• 在"高级设置"中,找到"会话管理"
• 勾选"启用会话记忆"
2️⃣设置上下文轮数
上下文轮数
设置保留多少轮对话,建议 10-20 轮
会话超时时间
设置多久无互动后结束会话,建议 30 分钟
3️⃣优化提示词
在提示词中说明如何使用上下文:
你是一个智能助手,能够记住对话历史。 ## 上下文使用规则 1. 仔细阅读对话历史,理解用户的意图 2. 如果用户使用"它"、"那个"等指代词,根据上下文判断指的是什么 3. 保持话题连贯,不要突然跳转到无关内容 4. 如果用户换了话题,自然地切换,不要纠结之前的内容
3.2 长期记忆配置
如果需要跨会话记住用户信息,需要配置长期记忆功能。
配置步骤
1. 启用用户识别
在 Bot 设置中,启用"用户识别"功能,为每个用户分配唯一 ID。
• 通过登录系统获取用户 ID
• 或使用设备指纹识别
• 或让用户输入手机号/邮箱
2. 配置记忆存储
选择记忆存储方式:
• Coze 内置存储:简单方便,但容量有限
• 外部数据库:需要配置 API,容量大,可自定义
3. 定义记忆内容
在提示词中说明要记住什么:
## 长期记忆规则 需要记住的信息: - 用户姓名、称呼偏好 - 用户的职业、兴趣 - 用户的常见问题和偏好 - 历史订单、服务记录 记忆方式: - 当用户主动告知信息时,记录下来 - 在后续对话中,主动使用这些信息 - 例如:"您好,张先生,上次您咨询过..."
四、上下文管理高级技巧
4.1 上下文压缩策略
当对话很长时,上下文会超出模型限制。这时需要压缩历史对话,保留关键信息。
策略1:滑动窗口
只保留最近的 N 轮对话,丢弃更早的内容。
工作原理:
对话历史:[消息1, 消息2, ..., 消息50]
窗口大小:20 条
保留:[消息31, 消息32, ..., 消息50]
丢弃:[消息1, 消息2, ..., 消息30]
优点:简单高效
缺点:可能丢失重要信息
策略2:智能摘要
用 LLM 总结历史对话,保留关键信息,压缩成简短摘要。
工作原理:
1. 当对话超过阈值(如 30 轮)
2. 用 LLM 总结前 20 轮对话
3. 摘要示例:"用户想买笔记本,预算 6000 元,用于办公和视频剪辑"
4. 用摘要替换原始对话
优点:保留关键信息,压缩率高
缺点:需要额外的 LLM 调用,有成本
策略3:重要性过滤
根据消息的重要性,选择性保留。
判断标准:
• 包含关键信息(用户需求、偏好、决策)
• 被后续对话引用
• 用户明确表示"记住这个"
优点:精准保留重要信息
缺点:实现复杂,需要训练模型
策略4:分层存储
将对话分为多个层次,不同层次使用不同的压缩策略。
存储层次:
• 热数据:最近 5 轮,完整保留
• 温数据:6-20 轮,保留关键消息
• 冷数据:20 轮以上,只保留摘要
优点:平衡性能和记忆
4.2 指代消解技术
理解"它"、"那个"、"刚才说的"等指代词,是多轮对话的核心能力。
常见指代类型
1. 代词指代
用户:"这款手机多少钱?"
Bot:"3999 元"
用户:"它有什么颜色?"
→ "它" 指代 "这款手机"
2. 省略主语
用户:"推荐一款笔记本"
Bot:"推荐联想小新 Pro"
用户:"配置怎么样?"(省略了"这款笔记本")
→ 指代 "联想小新 Pro"
3. 时间指代
用户:"北京明天天气怎么样?"
Bot:"明天晴天"
用户:"后天呢?"
→ "后天" 基于 "明天" 推算
4. 对比指代
用户:"A 和 B 哪个好?"
Bot:"A 性价比高,B 性能强"
用户:"那我选第一个"
→ "第一个" 指代 "A"
💡 提示词优化:引导指代消解
## 指代消解规则 1. 当用户使用"它"、"这个"、"那个"时: - 查看最近的对话,找到最可能的指代对象 - 通常指代最近提到的名词 2. 当用户省略主语时: - 延续上一轮的话题主体 - 例如:上一轮说"手机",这一轮问"多少钱",指的是"手机多少钱" 3. 当用户使用"第一个"、"第二个"时: - 查看上一轮 Bot 的回复,找到列表中的对应项 4. 如果无法确定指代对象: - 礼貌地询问:"您是指...吗?"
4.3 话题切换检测
用户可能在对话中切换话题,Bot 需要识别并适应。
话题切换的信号
1. 明确的切换词
用户使用明确的转折词:
• "对了,..."
• "换个话题,..."
• "另外,..."
• "不说这个了,..."
2. 语义跳跃
新问题与之前的话题完全无关:
之前:讨论笔记本电脑
突然:问天气
→ 明显的话题切换
3. 新的问题类型
从咨询变成投诉,或从查询变成购买:
之前:咨询产品信息
现在:投诉售后问题
→ 话题和意图都变了
如何处理话题切换
策略1:自然过渡
识别到话题切换后,自然地切换:
用户:"对了,北京明天天气怎么样?"
Bot:"好的,我帮您查一下北京明天的天气..."(不再纠结之前的笔记本话题)
策略2:确认切换
如果不确定是否切换,可以确认:
用户:"那个怎么样?"
Bot:"您是指刚才说的笔记本,还是想问其他的?"
策略3:保留上下文
切换话题后,仍然保留之前的上下文,以防用户回到原话题:
用户:"天气查完了,刚才那个笔记本多少钱?"
Bot:"联想小新 Pro 是 5499 元"(记得之前的话题)
4.4 上下文冲突处理
有时用户会说出与之前矛盾的信息,Bot 需要妥善处理。
冲突类型1:用户改变主意
用户:"我预算 5000 元"
Bot:"好的,5000 元预算..."
用户:"算了,还是 6000 吧"
处理:以最新的信息为准,更新预算为 6000
冲突类型2:用户纠正错误
用户:"我叫张伟"
Bot:"好的,张伟先生"
用户:"不对,是张薇,女字旁的薇"
处理:道歉并更正,"抱歉,张薇女士,我记下了"
冲突类型3:Bot 理解错误
用户:"我想要轻薄的"
Bot:"推荐游戏本..."(理解错了)
用户:"不是,我要轻薄本,不是游戏本"
处理:承认错误,重新推荐,"抱歉理解错了,轻薄本的话..."
💡 冲突处理原则
1. 最新优先:当信息冲突时,以用户最新的说法为准
2. 主动确认:如果不确定,主动询问用户
3. 礼貌道歉:如果是 Bot 理解错了,要道歉
4. 更新记忆:及时更新上下文中的信息
五、实战案例
5.1 案例一:智能客服(短期记忆)
场景
用户咨询产品问题,需要多轮对话才能解决。
对话示例
我想买一台笔记本电脑
好的!请问您主要用来做什么?办公、游戏还是设计?
主要办公,偶尔剪视频
明白了。那您的预算大概是多少呢?
6000左右
根据您的需求(办公+视频剪辑)和预算(6000元),我推荐以下两款:
1. 联想小新Pro 14(i5-12500H + 16G + 512G)
2. 华为MateBook 14(R7-5800H + 16G + 512G)
两款都适合办公和轻度剪辑,您想了解哪款的详细信息?
关键点
- • Bot 记住了用户的需求(办公+剪视频)
- • Bot 记住了用户的预算(6000元)
- • 在推荐时,综合考虑了之前的所有信息
5.2 案例二:个人助理(长期记忆)
场景
用户的私人助理,记住用户的习惯和偏好,提供个性化服务。
第一次对话
我叫张伟,是一名产品经理
您好,张伟!很高兴认识您。我已经记住了您的信息,以后可以叫您张先生或者张伟,您更喜欢哪个称呼?
叫我张伟就好
第二天的对话
早上好
早上好,张伟!今天有什么我可以帮您的吗?
关键点
- • Bot 跨会话记住了用户的姓名和职业
- • Bot 记住了用户的称呼偏好
- • 第二天对话时,主动使用了这些信息
5.3 案例三:教育辅导(结构化记忆)
场景
AI 英语老师,记录学生的学习进度、薄弱点,提供个性化辅导。
记忆结构设计
{
"student_id": "user_123",
"name": "小明",
"level": "中级",
"weak_points": [
"时态混淆(现在完成时 vs 过去时)",
"冠词使用(a/an/the)"
],
"learning_history": [
{
"date": "2024-03-01",
"topic": "现在完成时",
"score": 75,
"mistakes": ["have went → have gone"]
}
],
"preferences": {
"learning_style": "通过例句学习",
"practice_time": "晚上 8-9 点"
}
}对话示例
老师,我又来了
欢迎回来,小明!上次我们学习了现在完成时,你在 "have went" 这个地方出错了。今天我们继续巩固一下,顺便看看冠词的用法,这也是你的薄弱点。准备好了吗?
关键点
- • 使用结构化数据存储学习记录
- • 自动识别薄弱点,针对性辅导
- • 记住学习偏好,提供个性化体验
- • 可以生成学习报告和进度追踪
5.4 案例四:复杂场景(混合记忆策略)
场景
项目管理助手,需要同时处理多个项目,记住任务状态、团队成员、截止日期等信息。
记忆分层设计
第一层:会话记忆(短期)
当前对话的上下文,如"刚才讨论的那个任务"、"你提到的那个人"
第二层:项目记忆(中期)
当前项目的所有信息:任务列表、进度、成员、文档链接
第三层:用户记忆(长期)
用户的工作习惯、团队结构、常用工具、历史项目经验
对话示例
帮我看看 A 项目的进度
好的!A 项目目前进度 75%,还有 3 个任务待完成:
1. UI 设计(负责人:小李,截止 3月10日)
2. 后端接口(负责人:小王,截止 3月12日)
3. 测试(负责人:小张,截止 3月15日)
根据你的习惯,我已经在每天早上 9 点给你发送进度提醒了。
小李那个任务能按时完成吗?
根据小李的历史表现(上次 B 项目提前 2 天完成),以及当前进度(已完成 60%),应该能按时完成。不过我注意到他今天请假了,建议明天跟进一下。
关键点
- • 三层记忆架构,分别处理不同时间跨度的信息
- • 会话记忆:理解"那个任务"指的是刚才提到的 UI 设计
- • 项目记忆:知道 A 项目的所有任务和负责人
- • 用户记忆:记住用户的工作习惯(早上 9 点提醒)和团队成员的历史表现
- • 主动推理和建议(注意到请假,建议跟进)
六、常见问题与优化
Q1: Bot 总是忘记之前说的内容?
可能的原因:
- • 上下文轮数设置太小
- • 会话超时,自动清除了历史
- • 没有启用会话记忆
解决方案:
- • 增加上下文轮数(如从 5 增加到 15)
- • 延长会话超时时间
- • 检查会话记忆是否启用
Q2: Bot 回答越来越慢?
可能的原因:
- • 上下文太长,LLM 处理慢
- • 累积了太多无用的对话
解决方案:
- • 减小上下文轮数
- • 使用"上下文压缩"功能(自动总结历史)
- • 定期清理会话
Q3: 如何让 Bot 主动提及历史信息?
在提示词中明确引导:
## 主动使用历史信息 - 如果用户之前提到过相关信息,主动引用 - 例如:"您上次提到过..."、"根据您之前说的..." - 这样能让对话更自然、更贴心
Q4: 长期记忆会泄露用户隐私吗?
需要注意隐私保护:
- • 只记录必要的信息,不记录敏感数据(密码、身份证号)
- • 提供"清除记忆"功能,让用户可以删除历史
- • 遵守数据保护法规(如 GDPR)
- • 在隐私政策中说明记忆机制
七、最佳实践
1. 合理设置上下文长度
不是越长越好,根据场景选择:
- • 简单问答:5-10 轮
- • 客服咨询:10-15 轮
- • 深度对话:20-30 轮
2. 使用上下文压缩
当对话很长时,自动总结历史,保留关键信息,减少 token 消耗。
3. 区分短期和长期记忆
不是所有信息都需要长期记住:
- • 短期:临时查询、一次性任务
- • 长期:用户偏好、历史记录、个人信息
4. 提供清除记忆功能
让用户可以主动清除历史记忆,保护隐私,也能解决"Bot 记错了"的问题。
5. 测试边界情况
测试以下场景:
- • 超长对话(50+ 轮)
- • 频繁切换话题
- • 用户说错了信息
- • 会话超时后重新开始
总结
今天我们学习了 Coze 的多轮对话功能。多轮对话让 Bot 从"健忘"变成"记忆力好",能够理解上下文、记住用户信息,提供连贯、自然的对话体验。
关键要点:
- • 多轮对话 = 上下文记忆 + 指代消解 + 话题延续
- • 会话内记忆(短期)vs 跨会话记忆(长期)
- • 上下文窗口大小需要权衡:太小不连贯,太大响应慢
- • 在提示词中明确说明如何使用上下文
- • 注意隐私保护,提供清除记忆功能
下一章预告
Day 7 我们将学习发布集成功能。如何将 Bot 发布到微信、飞书、网页等平台,以及 API 调用和集成方案。