多轮上下文:对话记忆管理

多轮对话中,模型本身无状态,需由应用把历史消息传回上下文才能「记住」前文。受上下文窗口与成本限制,记忆管理是必须设计的一环。

是什么

常见三种策略:全量拼接(每次都把历史原样发送)、摘要压缩(把旧对话归纳成简短摘要)、显式状态(只保留关键槽位如订单号)。OpenAI 的对话接口即采用消息数组形式维护历史。

为什么重要

无记忆的模型会重复询问、前后矛盾;但无脑堆历史又会超出窗口并增加费用,还可能让模型被早期无关内容干扰。需要在连贯性与成本间取舍。

怎么做

用消息数组维护轮次:

[
  {"role": "system", "content": "你是订票助手"},
  {"role": "user", "content": "我要去北京"},
  {"role": "assistant", "content": "好的,几号出发?"},
  {"role": "user", "content": "下周一"}
]

注意点

  • 长对话应定期摘要旧轮次,控制 token 用量。
  • 只保留任务必需状态,减少噪声。
  • 注意上下文窗口上限,超出会被截断丢信息。

小结

多轮上下文靠应用侧维护历史,通过全量、摘要或显式状态三种记忆策略在连贯性与成本间平衡,是会话类应用的基础工程。

参考与延伸阅读

本文累计阅读