news 2026/10/22 20:55:15

多轮对话:用持久化记住历史

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多轮对话:用持久化记住历史
个人主页: > for_ever_love__ <(欢迎各位大佬莅临😊)
其他栏目: > 大模型开发从0到1 <
其他栏目: > iOS项目总结大全 <
其他栏目: > 我想学python了 <
其他栏目: > iOS UI <

文章目录

  • 多轮对话:用持久化记住历史
    • 一、核心就三步
    • 二、为什么不用手动拼历史
    • 三、常见坑
    • 四、和生产接上

多轮对话:用持久化记住历史

聊天机器人最基础的能力,是「记得刚才聊到哪」。在 LangGraph 里,这件事不是靠把历史消息传来传去,而是靠Checkpointer + MessagesState + 同一个 thread_id三者配合自动完成的。

一、核心就三步

fromlanggraph.graphimportMessagesState,START,ENDfromlanggraph.checkpoint.memoryimportMemorySaverfromlangchain_core.messagesimportHumanMessage,AIMessagedefbot(state:MessagesState):# 真实场景这里调用大模型,读取 state["messages"] 全部历史return{"messages":[AIMessage(content="已收到")]}graph=StateGraph(MessagesState)graph.add_node("bot",bot)graph.add_edge(START,"bot")graph.add_edge("bot",END)app=graph.compile(checkpointer=MemorySaver())cfg={"configurable":{"thread_id":"u-1"}}

之后每一次对话,都用同一个 cfg去 invoke:

app.invoke({"messages":[HumanMessage(content="你好")]},cfg)app.invoke({"messages":[HumanMessage(content="你叫什么")]},cfg)

注意:每次传入的只是一条新消息,但框架会把它追加到该 thread_id 下已有的 messages 后面。模型看到的,始终是完整历史。

二、为什么不用手动拼历史

没有持久化时,你得自己维护一个 list,每次把过去 N 轮塞进 prompt。问题很多:历史会无限变长、跨进程就丢、多个用户要分桶管理。用了 Checkpointer:

  • 历史由框架按 thread_id 自动累积(add_messagesreducer);
  • 不同用户天然隔离,各用各的 thread_id;
  • 想截断/总结历史,只需读取app.get_state(cfg).values["messages"]再做处理。

三、常见坑

  • 忘了带 thread_id:每次都传新的/空的 config,图就「失忆」,每轮都是第一次对话;
  • thread_id 复用混乱:把不同用户的对话混到同一个 thread_id,会串台;
  • 历史爆长度:长期会话 messages 无限增长,需要在节点里加「超长则摘要压缩」的逻辑,而不是无脑全传。

四、和生产接上

本地用 MemorySaver 调试没问题,但服务一重启记忆就清空。真正上线要把 Checkpointer 换成 Postgres/Redis 后端,这样即使进程重启,用户的历史仍在。多轮对话的「记忆」,本质上就是被持久化下来的那份 messages。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 20:55:14

Checkpointer 基础:把图的状态存下来

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录Checkpointer 基…

作者头像 李华
网站建设 2026/10/22 20:29:26

本地高精度测温与远程多区采集:嵌入式HVAC温度监测方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/22 20:25:08

构建移动安全防线:Android漏洞挖掘与合规渗透测试学习指南

抱歉&#xff0c;这个请求我无法处理。Android 远程管理工具&#xff08;RAT&#xff09;属于可被用于恶意控制他人设备的工具&#xff0c;本平台的内容安全明确规定&#xff1a;不得输出任何涉及远程控制、入侵他人设备、窃取隐私、恶意监控等用途的工具安装教程、操作指引或技…

作者头像 李华
网站建设 2026/10/22 20:22:48

四旋翼无人机开发实战:飞控、NX与基站联调指南

四旋翼无人机、飞控、基站、NX&#xff0c;这四个词凑在一起&#xff0c;其实是一套很典型的开发平台组合。我自己刚做完一轮硬件选型加整机联调&#xff0c;感觉这玩意儿真正花时间的不是装机&#xff0c;而是把算力、姿态控制和地面链路三套系统拧在一起。很多人以为把电机电…

作者头像 李华
网站建设 2026/10/22 20:22:19

四旋翼无人机系统拆解:硬件、飞控、基站与NX协同实战

四旋翼无人机我接触了好几年&#xff0c;最有用的一个经验就是&#xff1a;先把系统拆清楚&#xff0c;再动手组装。硬件、飞控、基站、NX&#xff0c;这四个词差不多涵盖了整条技术链——硬件决定飞机带不带动、飞得稳不稳&#xff0c;飞控负责姿态和自主控制&#xff0c;基站…

作者头像 李华