记忆+对话历史+Redis

📅 2026/7/3 11:56:39 👁️ 阅读次数 📝 编程学习
记忆+对话历史+Redis

解决问题:

  • 上下文连续性:让模型知道上一轮说过什么。
  • 会话个性化:让模型记住用户在当前会话里提供的信息,如名字、偏好、任务背景。
  • 多步任务承接:让模型把前一步结果作为后一步输入,而不是每轮都重新从零开始。

记忆的实现原理

  1. 读历史
  2. 把历史拼进当前提示
  3. 调用模型
  4. 把本轮输入和输出写回历史

工程化表达

  第一步:根据会话标识找到对应历史。
  比如通过 session_id="user-001" 找到这位用户当前会话的消息列表。

  第二步:把历史消息插入 Prompt。
  这一步通常会和 第 13 章 里的 MessagesPlaceholder("history") 配合使用。

  第三步:把“历史 + 当前问题”一起交给模型。
  这样模型看到的就不再只是当前一句话,而是完整上下文。

  第四步:把本轮消息写回历史存储。
  也就是把:用户这一轮输入、模型这一轮回复,都追加进去,供下一轮再读取。

Session_id

如何知道哪份历史属于哪位用户、哪次会话?最常见的做法就是使用 session_id,它就是“当前会话的编号”

RunnableWithMessageHistory

作用: 给一条已有的 Runnable / Chain 包上一层历史管理能力。

它并不替代你的 Prompt、Model、Parser,而是站在它们外面,统一负责历史的读取、注入和写回