LangGraph基础教程(4)---LangGraph的核心能力

一: 持久化能力

LangGraph 支持图状态的持久化和重放。

利用检查点(checkpointing)来持久化图状态,以及利用检查点执行图得重放和状态更新

检查点是图状态的快照,在图的每个超级步骤(superstep)执行后保存。每个检查点都与一个**线程(thread)**相关联,线程是检查点的集合。

当您调用图时,可以指定 thread_id 作为图配置的一部分。如果您不提供 thread_id,LangGraph 会自动生成一个。

持久化能力的基础:

①: 检查点:

本质:图状态的快照,在每个执行步骤(超级步骤)后自动保存。

作用:支撑状态恢复、重放和调试。

检查点结构:

复制代码
每个检查点都是一个 StateSnapshot 对象,其中包含:
values: 图状态的值
next: 下一个要执行的节点
config: 检查点配置,包括 thread_id 和 checkpoint_id
metadata: 关于检查点的元数据,如源节点和写入的内容
created_at: 创建时间
parent_config: 父检查点的配置
tasks: 与检查点相关的任务

②线程(Thread)

定义:关联特定执行实例的检查点集合,通过 thread_id 标识(可自定义为会话 ID、用户 ID 等)。

特性:调用图时指定 thread_id 即可绑定线程,未指定则自动生成。

持久化能力核心功能:状态的管理与操作

① 状态保存与启用

启用方式:编译图时指定检查点保存器(如 InMemorySaver 内存保存、SqliteSaver 数据库保存)。

自动保存:图执行时,每个步骤后自动生成检查点,覆盖初始状态、各节点执行后状态。

②状态获取

获取最新状态:通过 graph.get_state(config),传入 thread_id 即可。

获取历史状态:通过 graph.get_state_history(config),按时间顺序返回线程的所有检查点(最新在前)。

③状态重放

逻辑:指定 thread_id 和 checkpoint_id,图会跳过该检查点之前的已执行步骤,仅执行后续步骤。

用途:调试、复现执行流程、分支探索。

④状态更新

方法:通过 graph.update_state(config, values) 编辑状态,支持分支现有检查点。

规则:无 reducer 的状态字段直接覆盖,有 reducer 的字段按规则合并(如列表拼接)。

可选参数 as_node:指定更新来源节点,影响后续执行路径。

扩展:

内置:InMemorySaver(适合实验)。

扩展:SqliteSaver(本地生产)、PostgresSaver(分布式生产),需单独安装。

持久化的核心价值

人机循环:支持流程暂停(如人工审核)后恢复,保留中间状态。

记忆保留:跨对话 / 线程共享用户信息,无需重复输入。

时间旅行:重放执行流程,快速调试问题。

容错恢复:节点故障后,从最后一个成功检查点重启,避免重复执行。

二. 持久执行

持久执行是一种技术,其中流程或工作流在关键点保存其进度,使其能够暂停并在稍后从停止的确切位置恢复。

通过保留已完成的工作,持久执行使流程能够恢复而无需重新处理之前的步骤------即使在显著延迟后(例如,一周后)。

核心定义与价值:

①持久执行:工作流在关键点保存进度,可暂停并从停止位置恢复,无需重跑已完成步骤。

②核心场景:人在循环交互(如人工审核)、长时间任务(如 LLM 超时)、系统故障恢复(中断后免重复处理)。

③启用前提:编译图时指定 checkpointer(检查点),即默认开启持久执行。

三种持久性模式:

调用方式:通过 durability 参数指定(如 graph.stream(input, durability="sync"))。

模式 核心逻辑 性能 一致性 适用场景
exit 仅工作流完成(成功 / 失败)后持久化状态 最佳 最低 无需中途恢复的短任务
async 异步持久化(并行执行下一步与保存检查点) 良好 中等 多数常规场景
sync 同步持久化(保存检查点后再执行下一步) 较差 最高 数据不允许丢失的核心任务

三. 流式传输

LangGraph实现了一个流式传输系统,用于实时输出执行进度与数据。

支持的流式传输模式

模式 描述
values 在图的每个步骤后流式传输状态的完整值
updates 在图的每个步骤后流式传输状态的更新。如果在同一步骤中进行了多次更新(例如,运行了多个节点),这些更新会分别流式传输。
custom 从图节点内部流式传输自定义数据。
messages 从调用LLM的任何图节点流式传输2元组(LLM令牌,元数据)。
debug 在图执行过程中流式传输尽可能多的信息。

四. 中断

LangGraph 的中断(Interrupt) 功能允许在图执行的任意点动态暂停流程,等待外部输入(如人工审批、内容编辑)后再恢复,核心依赖检查点(持久化状态) 和thread_id(定位待恢复状态);

中断通过在图节点的任何点调用interrupt()函数来工作。该函数接受任何JSON可序列化的值,这些值会显示给调用者。当您准备好继续时,您通过使用Command重新调用图来恢复执行,然后它成为节点内部interrupt()调用的返回值。

中断定义:LangGraph 中用于动态暂停图执行、等待外部输入的功能,区别于静态断点(固定节点前后暂停),可在节点代码任意位置触发,适配人在循环场景。

价值: 解决 "流程需外部干预" 的需求,如关键操作审批、LLM 输出纠错、工具调用确认等,确保流程安全性和灵活性。

依赖基础:

① 检查点(Checkpointer):必须启用(如InMemorySaver、SqliteSaver),用于持久化暂停时的图状态,确保恢复时不丢失进度。

② thread_id:作为 "持久游标",通过config={"configurable": {"thread_id": ...}}配置,复用该 ID 可恢复对应状态,新 ID 则启动全新流程。

核心要求:必须使用与暂停时相同的 thread_id

相关推荐
一如年少模样丶2 小时前
AI 智能体的终极记忆方案?来认识一下 Graphiti
人工智能
机器学习之心2 小时前
NRBO-XGBoost+SHAP分析+新数据预测!机器学习可解释分析不在发愁!提供9种混沌映射方法(tent、chebyshev、singer等)
人工智能·机器学习·nrbo-xgboost
天天讯通2 小时前
医院慢病电话随访:AI 问血压→异常转医生,0 人工
人工智能
张较瘦_2 小时前
[论文阅读] 生成式人工智能嵌入对公众职业安全感冲击的影响机理及防范对策
论文阅读·人工智能
这张生成的图像能检测吗2 小时前
(论文速读)Regor - 渐进式对应点再生实现鲁棒3D配准
人工智能·算法·计算机视觉·配准·3d点云
shayudiandian2 小时前
AI学习路线图2025:从入门到进阶的完整指南
人工智能
聚梦小课堂3 小时前
2025年11月10日 AI快讯
人工智能·新闻资讯·ai大事件
挽安学长3 小时前
Claude Code 重大更新:支持一键原生安装,彻底别了 Node.js,附Claudecode国内使用最新方式!
人工智能
FreeCode3 小时前
LangChain1.0智能体开发:人机协作
python·langchain·agent