内置的持久层-检查点Checkpoint 机制实现真正强大且以用户为中心的 AI 智能体不仅需要速度还需要有连续性。用户期望AI 智能体能够记住过往交互跨多个会话保持上下文并能优雅地从中断或错误中恢复。这正是持久化技术的价值所在。LangGraph 的持久化基于线程Thread和存档点Checkpoint两大概念之上。线程代表图的独立执行上下文或会话由 thread_id 唯一标识。存档点本质上是图在执行的不同阶段的状态快照由可插拔的存档点器Checkpointer管理。本章节将深入探讨线程和存档点如何协同工作以提供连续性并实现高级智能体功能。核心概念线程Thread与检查点Checkpoint1. 线程Thread在LangGraph 框架中线程代表图的独立执行上下文。可以将其理解为特定对话历史记录或工作流程执行的专属实例。每个线程都通过唯一的thread_id 进行标识开发者在调用支持持久化的LangGraph 时必须提供该标识符。这个thread_id 作为命名空间确保每个执行过程关联的存档点和状态数据与其他执行实例保持隔离。这种隔离机制对于处理并发用户交互或管理同一LangGraph 应用中的多个独立工作流程具有关键作用。当启动支持持久化的LangGraph 运行时必须在configurable 配置部分明确指定thread_id 参数。在调用 LangGraph 时在 config 中传递 thread_idconfig {configurable: {thread_id: user_conversation_123}}2. 检查点CheckpointLangGraph 中的检查点是图在特定时间点的状态快照。当启用持久化功能时LangGraph 会在图执行的每个 Superstep 后自动创建这些快照。Superstep 通常对应图中一个或多个节点的执行然后由控制流逻辑确定下一步。每个存档点都会完整捕获图的当前状态包括所有已定义状态通道的值。此状态被封装在 StateSnapshot 对象中该对象包含以下关键组成部分。属性名称描述config与此存档点关联的配置包括 thread_id 和唯一的 checkpoint_id。metadata与存档点关联的元数据包括执行步骤、存档点来源以及写入操作的上下文信息。values包含存档点创建时所有状态通道值的字典。这是持久化的核心状态数据。next指示在图流程中计划执行的下一个节点的元组。tasks由 PregelTask 对象组成的元组提供关于下一步任务的详细信息包括任务 ID、节点名称以及可能出现的错误或中断记录。这些 StateSnapshot 对象由存档点器存储在持久化存储后端中并与 thread_id 关联。LangGraph 自动处理存档点过程在每个Superstep 后创建新的存档点。这确保了智能体状态的定期备份从而实现状态的恢复、重放和检查。通过检索和加载这些存点LangGraph 可以从先前保存的状态开始“回溯”或“恢复”智能体从而支持诸如记忆保持和时间旅行等高级特性。内存检查点保存器LangGraph 提供了几种内置的存档点器实现每种实现都利用不同的存储后端。MemorySaver内存存档点•优点快速、易于设置•缺点数据不持久应用重启后丢失•用途开发、测试、原型设计SqliteSaver基于文件的持久化•优点轻量级、跨应用重启持久•缺点不适合高并发场景•用途本地应用、小规模部署PostgresSaver生产级持久化•优点可靠、可扩展、支持并发•缺点需要数据库服务器•用途生产环境、多用户应用让我们通过实际例子来演示持久化的使用示例 1使用 MemorySaver 实现持久化的笑话生成器让我们创建一个带有持久化功能的笑话生成器演示如何保存和恢复状态from langgraph.checkpoint.memory import MemorySaver# 使用 LLM 版本的笑话生成器但添加持久化graph_persistent ( StateGraph(State) .add_node(refine_topic) .add_node(generate_joke, generate_joke_with_llm) .add_edge(START, refine_topic) .add_edge(refine_topic, generate_joke) .compile(checkpointerMemorySaver()) # 启用持久化)# 定义线程配置config {configurable: {thread_id: my_thread_1}}print(第一次运行)for chunk in graph_persistent.stream( {topic: ice cream}, configconfig, stream_modeupdates,): print(chunk)print(\n获取最终状态)print(graph_persistent.get_state(config).values)第一次运行{refine_topic: {topic: ice cream and cats}}{generate_joke: {joke: Why did the cat wear a scarf around its ice cream cone?\n\nBecause it was a chilly day and the cat wanted to keep its paws cool!}}获取最终状态{topic: ice cream and cats, joke: Why did the cat wear a scarf around its ice cream cone?\n\nBecause it was a chilly day and the cat wanted to keep its paws cool!}示例 2使用 SqliteSaver 编译具有持久化的 LangGraphimport sqlite3from langgraph.checkpoint.sqlite import SqliteSaverconn sqlite3.connect(checkpoints.sqlite, check_same_threadFalse)checkpointer SqliteSaver(conn)# 使用 LLM 版本的笑话生成器但添加持久化graph_persistent ( StateGraph(State) .add_node(refine_topic) .add_node(generate_joke, generate_joke_with_llm) .add_edge(START, refine_topic) .add_edge(refine_topic, generate_joke) .compile(checkpointercheckpointer) # 启用持久化)# 定义线程配置config {configurable: {thread_id: my_thread_1}}print(第一次运行)for chunk in graph_persistent.stream( {topic: ice cream}, configconfig, stream_modeupdates,): print(chunk)print(\n获取最终状态)print(graph_persistent.get_state(config).values)第一次运行{refine_topic: {topic: ice cream and cats}}{generate_joke: {joke: Why did the cat refuse to eat the ice cream\n\nBecause it was purr-fectly chilled!}}获取最终状态{topic: ice cream and cats, joke: Why did the cat refuse to eat the ice cream\n\nBecause it was purr-fectly chilled!}持久化的实际应用1. 对话记忆这种由 LangGraph 持久化实现的对话记忆实际上是一种短期对话记忆。智能体会记住当前对话中的内容因为消息历史记录和相关状态会在每个回合通过存档点器保存。这种短期记忆对于维持基本的对话连贯性和响应性至关重要。2. 人机环路工作流持久化机制在 LangGraph 中对于实现人机环路工作流至关重要。这些工作流需要在智能体执行的各阶段引入人工干预以实现批准、反馈或直接的状态编辑。持久化支持图执行的无缝中断和恢复允许人工操作员检查存档点处的智能体状态、做出决策、提供输入或修改状态然后指示图从该点继续执行。3. 时间旅行调试和分支LangGraph 的持久化机制在支持时间旅行方面展现了其强大能力为高级开发和调试工作提供重要支持。时间旅行在此能指导并查看 LangGraph 执行的历史状态使开发者能检查过去的决策、从特定点重放执行过程甚至分支执行路径以探索替代结果。这一功能显著提升开发效率使调试工作更高效实验更加便捷同时深化对复杂智能体行为的整体理解。时间旅行的基础是浏览执行历史记录的能力。在 config 中提供 thread_id时,graph.get_state(config) 方法会返回指定线程的当前状态。graph.get_state_history(config) 方法会返回按时间顺序排列的 StateSnapshot 对象列表。此列表记录指定线程的完整执行历史最新状态快照排在最前。示例 3使用 graph.get_state_history 浏览执行历史记录持久化的一个强大功能是能够查看完整的状态历史print(状态历史回顾)state_history list(graph_persistent.get_state_history(config))for i, snapshot in enumerate(state_history): print(f\n存档点 {i 1}:) print(f ID: {snapshot.config[configurable][checkpoint_id][:8]}...) print(f 步骤: {snapshot.metadata}) print(f 状态: {snapshot.values}) print(f 下一个节点: {snapshot.next}) print(- * 50)状态历史回顾存档点 1: ID: 1f07dcca... 步骤: {source: loop, step: 2, parents: {}} 状态: {topic: ice cream and cats, joke: Why did the cat refuse to eat the ice cream\n\nBecause it was purr-fectly chilled!} 下一个节点: ()--------------------------------------------------存档点 2: ID: 1f07dcca... 步骤: {source: loop, step: 1, parents: {}} 状态: {topic: ice cream and cats} 下一个节点: (generate_joke,)--------------------------------------------------存档点 3: ID: 1f07dcca... 步骤: {source: loop, step: 0, parents: {}} 状态: {topic: ice cream} 下一个节点: (refine_topic,)--------------------------------------------------存档点 4: ID: 1f07dcca... 步骤: {source: input, step: -1, parents: {}} 状态: {} 下一个节点: (__start__,)-------------------------------------------------- 状态历史的价值通过查看状态历史我们可以看到• 每个存档点的唯一 ID• 执行的步骤和元数据信息• 每个阶段的完整状态• 计划执行的下一个节点这对于调试、监控和理解智能体的行为非常有价值。示例 4使用 graph.stream(…, checkpoint_id…) 重放执行# 正确的重放方式从检查点继续执行# 选择一个中间存档点有下一个步骤的# 第2个存档点状态为刚完成refine_topiccheckpoint_to_replay state_history[1]print(f重放检查点{checkpoint_to_replay.values})print(f下一个节点{checkpoint_to_replay.next})# 从该检查点继续执行replay_config checkpoint_to_replay.configprint(\n从检查点继续执行)for event in graph_persistent.stream(None, replay_config, stream_modevalues): print(event)重放检查点{topic: ice cream and cats}下一个节点(generate_joke,)从检查点继续执行{topic: ice cream and cats}{topic: ice cream and cats, joke: Why did the cat join the ice cream shop\s loyalty program?\n\nBecause she heard they had a paw-some reward for paws-singly good reviewers!}更新状态update_state功能 允许用户或外部系统手动编辑图的状态。这可以用于强制纠正、注入信息或在特定检查点创建分叉Fork历史。关键参数config必须包含thread_id。如果包含checkpoint_id则会从该历史点开始分叉。只传递thread_id则更新当前最新状态。values用于更新状态的值。更新逻辑与节点输出完全相同即会通过状态通道的归约器进行处理。对于有归约器的通道它是累加/合并对于没有归约器的通道它是覆盖。as_node可选指定本次更新来自哪个节点。这很重要因为它会影响图在更新后决定下一个执行哪个节点。示例 5使用 graph.update_state(…, values) 从存档点分支执行# 让我们从历史记录中的第 2 个存档点分支checkpoint_to_branch state_history[1]branch_config checkpoint_to_branch.config# 创建一个新存档点使用相同的 checkpoint_id 但更新状态new_branch graph_persistent.update_state( branch_config, {topic: ice cream and dogs})# 恢复图的执行 - 它现在将使用分支的存档点for event in graph_persistent.stream(None, new_branch, stream_modevalues): print(event){topic: ice cream and dogs}{topic: ice cream and dogs, joke: Why did the dog refuse the ice cream?\n\nBecause he heard it was paw-sicly good!}普通人如何抓住AI大模型的风口为什么要学AI大模型当下⼈⼯智能市场迎来了爆发期并逐渐进⼊以⼈⼯通⽤智能AGI为主导的新时代。企业纷纷官宣“ AI ”战略为新兴技术⼈才创造丰富的就业机会⼈才缺⼝将达 400 万DeepSeek问世以来生成式AI和大模型技术爆发式增长让很多岗位重新成了炙手可热的新星岗位薪资远超很多后端岗位在程序员中稳居前列。与此同时AI与各行各业深度融合飞速发展成为炙手可热的新风口企业非常需要了解AI、懂AI、会用AI的员工纷纷开出高薪招聘AI大模型相关岗位。AI大模型开发工程师对AI大模型需要了解到什么程度呢我们先看一下招聘需求知道人家要什么能力一切就好办了我整理了AI大模型开发工程师需要掌握的知识如下大模型基础知识你得知道市面上的大模型产品生态和产品线还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异以及了解开源模型的二次开发优势以及闭源模型的商业化限制等等。了解这些技术的目的在于建立与算法工程师的共通语言确保能够沟通项目需求同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。产品经理还需要有业务sense这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术更多的是从技术边界、成本等角度出发选择合适的技术方案来实现需求甚至用业务来补足技术的短板。AI Agent现阶段AI Agent的发展可谓是百花齐放甚至有人说Agent就是未来应用该有的样子所以这个LLM的重要分支必须要掌握。Agent中文名为“智能体”由控制端Brain、感知端Perception和行动端Action组成是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”让它自动完成工作。Agent的核心特性自主性能够独立做出决策不依赖人类的直接控制。适应性能够根据环境的变化调整其行为。交互性能够与人类或其他系统进行有效沟通和交互。对于大模型开发工程师来说学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多比如dify、coze拿来做一个小项目你就会发现其实并不难。AI 应用项目开发流程如果产品形态和开发模式都和过去不一样了那还画啥原型怎么排项目周期这将深刻影响产品经理这个岗位本身的价值构成所以每个AI产品经理都必须要了解它。看着都是新词其实接触起来也不难。从0到1的大模型系统学习籽料最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师吴文俊奖得主给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。基础篇包括了大模型的基本情况核心原理带你认识了解大模型提示词Transformer架构预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门AI大模型进阶篇你将掌握RAGLangchain、Agent的核心原理和应用学习如何微调大模型让大模型更适合自己的行业需求私有化部署大模型让自己的数据更加安全项目实战篇会手把手一步步带着大家练习企业级落地项目比如电商行业的智能客服、智能销售项目教育行业的智慧校园、智能辅导项目等等但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下AI时代企业最需要的是既懂技术、又有实战经验的复合型人才**当前人工智能岗位需求多薪资高前景好。**在职场里选对赛道就能赢在起跑线。抓住AI这个风口相信下一个人生赢家就是你机会永远留给有准备的人。如何获取这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】