LangGraph持久化层完全指南:线程、检查点与Memory Store详解,大模型开发必学内容,建议收藏
LangGraph 拥有一个内置的持久化层是通过 checkpointer 实现的。当使用 checkpointer 编译 Graph 时checkpointer 会为 thread 在每个 Super-step 后保存一个类型为 StateSnapshot 的 checkpoint记录 thread 级别图的状态可以利用 checkpoint 执行图的重放或更新状态。线程 Thread线程必须有唯一标识符由 checkpointer 保存到 checkpoint检查点中来标识检查点属于哪一个线程线程信息存放在 RunnableConfig 对象中必须指定 thread_id 属性在 graph 执行时使用。config: RunnableConfig {configurable: {thread_id: 1}} graph.invoke({foo: , bar:[]}, config)检查点 Checkpoints检查点是 线程级别 的类型为 StateSnapshot在每个 Super-step 后由 checkpointer 保存。 会被持久化可以用来在以后恢复线程的状态。通过 get_state 函数获取线程的检查点。# 获取线程最后一个检查点 config {configurable: {thread_id: 1}} graph.get_state(config) # 获取线程某一个检查点需要指定checkpoint_id config {configurable: {thread_id: 1, checkpoint_id: 1ef663ba-28fe-6528-8002-5a559208592c}} graph.get_state(config)通过 get_state_history 获取历史检查点列表。config {configurable: {thread_id: 1}} list(graph.get_state_history(config))重放(重新执行)某一 检查点之后 的所有步骤检查点之前的步骤不会执行。config {configurable: {thread_id: 1, checkpoint_id: 0c62ca34-ac19-445d-bbb0-5b4984975b2a}} graph.invoke(None, configconfig)通过 update_state 函数编辑状态。接受 3 个参数分别是 config、values 和as_node。config必须包含 thread_id 属性如果只有 thread_id 属性编辑的是当前(最终)的状态如果包含 checkpoint_id 属性编辑的是对应检查点的状态。values用于更新状态的数据。如果状态中要更新的属性定义了reducer 函数值将会传递给 reducer 函数没有设置 reducer 函数的属性会被覆盖from typing import Annotated from typing_extensions import TypedDict from operator import add class State(TypedDict): foo: int bar: Annotated[list[str], add] # 定义了 reducer 函数 # 当前(最终)状态 {foo: 1, bar: [a]} # 更新最终状态 graph.update_state(config, {foo: 2, bar: [b]}) # 结果为 {foo: 2, bar: [a, b]} foo 属性被覆盖bar属性由 reducer 函数 add 处理as_node如果指定了as_node可以模拟特定节点的输出并根据模拟节点的输出边决定下一个节点是谁# 假设当前图停留在 human_review 节点之后 # 我们想要更新状态并让图认为这是从 agent 节点发出的更新 config {configurable: {thread_id: 1, checkpoint_id: ...}} graph.update_state( config, {messages: [HumanMessage(contentLooks good!)]}, as_nodeagent # 模拟 agent 节点更新了状态 ) # 此时调用 graph.invoke(None, config) # 图会根据 agent 节点的输出边edges来决定下一步去哪里Memory Store由于检查点是线程级别的无法在多个线程中共享数据如果一个用户开启了两个会话线程想在线程间共享数据就需要使用 Store 来存储数据基础用法from langgraph.store.memory import InMemoryStore # 创建store in_memory_store InMemoryStore() # 创建用户的 命名空间 user_id 1 namespace_for_memory (user_id, memories) # 存储数据 memory_id str(uuid.uuid4()) memory {food_preference : I like pizza} in_memory_store.put(namespace_for_memory, memory_id, memory) # 取出数据 memories in_memory_store.search(namespace_for_memory) # 拿到最后一条 memories[-1].dict() #{value: {food_preference: I like pizza}, #key: 07e0caf4-1631-47b7-b15f-65515d4c1843, #namespace: [1, memories], #created_at: 2026-01-16T13:22:31.59060208:00, #updated_at: 2026-01-16T13:22:31.59060508:00}语义搜索需要使用 Embedding 模型在创建 store 时设置 index 属性。from langchain.embeddings import init_embeddings # 创建 store store InMemoryStore( index{ embed: init_embeddings(openai:text-embedding-3-small), # Embedding 模型 dims: 1024, # Embedding 维度 fields: [food_preference, $] # 需要向量化的字段 } ) # 保存数据 store.put( namespace_for_memory, str(uuid.uuid4()), { food_preference: I love Italian cuisine, context: Discussing dinner plans }, index[food_preference] # 只向量化 food_preference 字段 ) # 搜索 memories store.search( namespace_for_memory, queryWhat does the user like to eat?, limit3 # Return top 3 matches )LangGraph 中使用 store需要在 config 中增加 user_id 属性在节点中使用时需要增加 store: BaseStore 参数。from langgraph.store.memory import InMemoryStore from langgraph.checkpoint.memory import InMemorySaver checkpointer InMemorySaver() in_memory_store InMemoryStore() graph graph.compile(checkpointercheckpointer, storein_memory_store) # 增加 user_id 属性 user_id 1 config {configurable: {thread_id: 1, user_id: user_id}} # 节点中使用 def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore): # 1. 从 config 中获取 user_id user_id config[configurable][user_id] # 2. 组装 namespace namespace (user_id, memories) # 搜索数据 memories store.search( namespace, querystate[messages][-1].content, limit3 ) info \n.join([d.value[memory] for d in memories]) }AI大模型从0到精通全套学习大礼包我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。只要你是真心想学AI大模型我这份资料就可以无偿共享给你学习。大模型行业确实也需要更多的有志之士加入进来我也真心希望帮助大家学好这门技术如果日后有什么学习上的问题欢迎找我交流有技术上面的问题我是很愿意去帮助大家的如果你也想通过学大模型技术去帮助就业和转行可以扫描下方链接大模型重磅福利入门进阶全套104G学习资源包免费分享01.从入门到精通的全套视频教程包含提示词工程、RAG、Agent等技术点​02.AI大模型学习路线图还有视频解说全过程AI大模型学习路线​03.学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的04.大模型面试题目详解05.这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事‌如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】

相关新闻

用YOLOv13打造智能零售货架检测系统,附完整过程

用YOLOv13打造智能零售货架检测系统,附完整过程

用YOLOv13打造智能零售货架检测系统,附完整过程 在实体零售数字化升级过程中,货架商品识别长期面临三大痛点:多品牌混排导致类别泛化难、小包装商品密集摆放引发漏检、促销堆头结构复杂造成定位偏移。传统YOLO系列模型在这些场景下常出现置信…

2026/7/6 1:13:09 阅读更多 →
2024最新百度网盘直链提取工具使用教程:突破限速实现高速下载的完整指南

2024最新百度网盘直链提取工具使用教程:突破限速实现高速下载的完整指南

2024最新百度网盘直链提取工具使用教程:突破限速实现高速下载的完整指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否还在为百度网盘下载速度缓慢而烦恼&…

2026/7/3 18:25:56 阅读更多 →
Unity游戏文本实时翻译工具:解决多语言游戏体验痛点的实用方案

Unity游戏文本实时翻译工具:解决多语言游戏体验痛点的实用方案

Unity游戏文本实时翻译工具:解决多语言游戏体验痛点的实用方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因外语游戏界面晦涩难懂而错失优质游戏体验?是否在面对日语…

2026/7/6 17:21:16 阅读更多 →

最新新闻

洛雪音乐音源终极指南:如何一键解锁五大平台免费音乐资源?

洛雪音乐音源终极指南:如何一键解锁五大平台免费音乐资源?

洛雪音乐音源终极指南:如何一键解锁五大平台免费音乐资源? 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为音乐平台的会员费用烦恼吗?想要免费畅听QQ音乐…

2026/7/6 23:12:13 阅读更多 →
OpenOFDM 2017 版本仿真环境搭建:Ubuntu 22.04 下 3 步解决 clk_gen 模块缺失问题

OpenOFDM 2017 版本仿真环境搭建:Ubuntu 22.04 下 3 步解决 clk_gen 模块缺失问题

OpenOFDM 2017版本仿真环境搭建:Ubuntu 22.04下3步解决clk_gen模块缺失问题在数字通信和FPGA开发领域,OpenOFDM项目作为一个开源的802.11 OFDM PHY解码器实现,一直是研究者和工程师学习OFDM技术的宝贵资源。然而,随着项目的迭代更…

2026/7/6 23:12:13 阅读更多 →
KMS_VL_ALL_AIO:3分钟完成Windows系统激活的终极免费方案

KMS_VL_ALL_AIO:3分钟完成Windows系统激活的终极免费方案

KMS_VL_ALL_AIO:3分钟完成Windows系统激活的终极免费方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否正在为Windows系统激活而烦恼?面对复杂的命令行操作和昂贵…

2026/7/6 23:10:11 阅读更多 →
Balena Etcher终极指南:三步搞定系统启动盘的免费神器

Balena Etcher终极指南:三步搞定系统启动盘的免费神器

Balena Etcher终极指南:三步搞定系统启动盘的免费神器 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 还在为制作系统启动盘而烦恼吗?命令…

2026/7/6 22:59:58 阅读更多 →
5分钟高效找回QQ空间青春记忆:GetQzonehistory智能数据恢复指南

5分钟高效找回QQ空间青春记忆:GetQzonehistory智能数据恢复指南

5分钟高效找回QQ空间青春记忆:GetQzonehistory智能数据恢复指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在为QQ空间里那些消失的青春记忆而烦恼吗?那些…

2026/7/6 22:57:55 阅读更多 →
终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档

终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档

终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾经为《塞尔达传说:旷野之…

2026/7/6 22:55:53 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻