多轮对话中模型忘记用户刚提供的信息时,如何设计短期记忆和历史消息压缩策略
进阶版来源:tencent初级工程师短期记忆策略多轮对话记忆管理摘要一致性评估上下文压缩
草稿
答案解析
我一般会把这个问题拆成两层来设计:一层是短期记忆,也就是当前会话内模型必须马上用到的信息;另一层是历史消息压缩,用来解决上下文窗口有限的问题。
短期记忆这块,我不会简单地把所有历史消息原样塞给模型,而是维护一个结构化的 session memory,比如:
用户当前目标:他现在想完成什么任务 用户刚提供的关键参数:比如姓名、订单号、业务类型、约束条件 对话状态:当前流程走到哪一步,下一步需要问什么 已确认事实:用户已经明确确认过的信息 待确认信息:还缺哪些字段
比如用户说:“我想查 2024 年 5 月北京地区的销售数据”,那短期记忆里会保存:时间是 2024 年 5 月,地区是北京,任务是查询销售数据。后面用户只说“那上海呢”,模型也能知道是在同一个时间范围和同一个查询任务下,把地区切换成上海。
实现上可以在每轮对话后做一次 memory update,让模型或规则从用户输入和助手回复中抽取关键信息,更新到一个结构化 JSON 里。下一轮请求模型时,不只传历史消息,还会把这份短期记忆作为 system 或 developer context 的一部分传进去
登录后查看完整内容
