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, config=config)

通过 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(content="Looks good!")]}, as_node="agent" # 模拟 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.590602+08:00', #'updated_at': '2026-01-16T13:22:31.590605+08: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, query="What does the user like to eat?", limit=3 # 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(checkpointer=checkpointer, store=in_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, query=state["messages"][-1].content, limit=3 ) 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%免费】🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1221393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Emotion2Vec+ Large悲伤识别效果?低强度情感捕捉能力评估

Emotion2Vec Large悲伤识别效果?低强度情感捕捉能力评估 1. 为什么专门测试“悲伤”识别能力? 很多人以为语音情感识别系统最擅长的是识别那些情绪外放、特征明显的情感——比如愤怒时的高音调、快乐时的上扬语调、惊讶时的短促爆发。但真实世界里&…

TurboDiffusion部署成功率提升:开机即用镜像稳定性评测

TurboDiffusion部署成功率提升:开机即用镜像稳定性评测 1. 为什么TurboDiffusion的“开机即用”值得认真对待 你有没有试过部署一个视频生成框架,结果卡在环境配置上整整两天?pip install报错、CUDA版本不匹配、模型权重下载失败、WebUI启动…

Paraformer-large与RAG结合:语音知识库构建部署全流程

Paraformer-large与RAG结合:语音知识库构建部署全流程 语音识别技术正从“能听懂”迈向“真有用”。当Paraformer-large这样的工业级离线ASR模型,不再只是生成一行行文字,而是成为知识提取的入口、信息组织的起点、智能问答的基石——它就真…

从零构建Agentic RAG系统:让AI像人一样思考,智能调用工具解决问题

文章介绍了如何构建Agentic RAG系统,该系统能像人类一样思考,连续调用不同工具解决问题。首先解释了RAG(检索增强生成)的基本概念,然后展示了如何将其与AI Agent结合形成Agentic RAG。通过使用自定义工具和向量数据库&…

突破语言壁垒:XUnity.AutoTranslator 终极游戏翻译工具全解析

突破语言壁垒:XUnity.AutoTranslator 终极游戏翻译工具全解析 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 全球玩家的共同困境:语言障碍如何扼杀游戏体验 当你满怀期待地启动一…

ViGEmBus游戏控制器驱动全面解决方案指南

ViGEmBus游戏控制器驱动全面解决方案指南 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在PC游戏体验中,游戏控制器驱动的稳定性与手柄模拟工具的兼容性直接影响玩家的操作体验。ViGEmBus作为一款专业的设备模拟技术解…

Z-Image-Turbo游戏开发:角色原画快速产出实战

Z-Image-Turbo游戏开发:角色原画快速产出实战 在游戏开发前期,角色原画的产出效率直接影响项目整体节奏。传统手绘或PS精修流程动辄数小时一张,而Z-Image-Turbo凭借其轻量级架构与高保真生成能力,让设计师能在几分钟内完成从文字…

YOLOv9 horses.jpg测试图效果展示,识别精准

YOLOv9 horses.jpg测试图效果展示,识别精准 在目标检测领域,一张图胜过千行代码——尤其当这张图是真实场景下的复杂目标时。horses.jpg作为YOLO系列经典测试图像之一,画面中多匹姿态各异、毛色交错、部分遮挡的马匹密集分布于草地与栅栏之间…

3步打造高效右键菜单:ContextMenuManager工具从入门到精通

3步打造高效右键菜单:ContextMenuManager工具从入门到精通 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 据统计,85%的电脑用户每天要在…

炉石传说游戏增强工具HsMod功能定制指南

炉石传说游戏增强工具HsMod功能定制指南 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 性能调优策略:从技术原理到实战配置 核心加速功能技术解析 HsMod性能优化模块基于动态方法拦…

百度网盘提取码智能解析工具:提升资源获取效率的全方案

百度网盘提取码智能解析工具:提升资源获取效率的全方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字化协作日益频繁的今天,百度网盘作为国内主流云存储服务,其加密分享功能在保障资…

【2023更新】HsMod插件完全指南:从安装到精通的炉石效率提升方案

【2023更新】HsMod插件完全指南:从安装到精通的炉石效率提升方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款专为炉石传说玩家打造的免费优化工具,作为基于…

Speech Seaco Paraformer处理300秒音频极限测试:性能边界探查

Speech Seaco Paraformer处理300秒音频极限测试:性能边界探查 1. 为什么专门测试300秒这个临界点? 很多人第一次打开Speech Seaco Paraformer WebUI时,会下意识上传一段长录音——比如一场完整会议、一次技术分享、一节在线课程。当音频长度…

【报告】2030年全球数据中心建设展望

仲量联行(JLL)发布报告,展望2030年全球数据中心建设以及相关能源供应前景。人工智能与云计算将推动数据中心市场至2030年实现14%的年复合增长率预计在2025至2030年间,数据中心行业将新增97吉瓦容量,实现在五年内规模翻…

语音数据标注难?CAM++半自动标签生成技巧

语音数据标注难?CAM半自动标签生成技巧 在语音AI项目中,最让人头疼的往往不是模型训练,而是前期的数据准备——尤其是说话人标注。人工听一段段音频、反复比对、手动打标签,耗时又容易出错。一个10小时的语音数据集,可…

从0开始学语音检测:FSMN VAD新手入门教程

从0开始学语音检测:FSMN VAD新手入门教程 [toc] 你是不是也遇到过这些情况? 会议录音里夹杂着长时间的静音和翻纸声,想提取有效发言却得手动剪辑电话客服录音里噪声不断,语音片段被切得支离破碎做语音转写前总得先“猜”哪里有…

无需调参!Live Avatar数字人Gradio界面快速上手

无需调参!Live Avatar数字人Gradio界面快速上手 Live Avatar不是又一个“概念验证”项目,而是阿里联合高校开源、真正能跑起来的端到端数字人生成系统。它不依赖预渲染动画,不靠固定模板拼接,而是用14B级多模态扩散模型&#xff…

突破游戏控制边界:ViGEmBus虚拟手柄驱动革新游戏输入体验

突破游戏控制边界:ViGEmBus虚拟手柄驱动革新游戏输入体验 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在游戏世界中,控制器兼容性一直是玩家和开发者面临的核心挑战。不同设备接口不统一、老旧手柄无法适…

SGLang开源部署教程:无需手动配置的镜像使用全攻略

SGLang开源部署教程:无需手动配置的镜像使用全攻略 1. 为什么你需要SGLang——不是又一个推理框架,而是“能跑得动”的LLM工具 你是不是也遇到过这些情况: 下载了一个大模型,本地跑起来卡得像PPT,GPU显存爆满&#…

一文说清硬件电路设计基础:电阻电容应用要点

以下是对您提供的博文《一文说清硬件电路设计基础:电阻电容应用要点——深度技术分析》的 全面润色与重构版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,代之以资深硬件工程师第一人称视角的真实表达 ✅ 摒弃模板化标题&#…