当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/596332.html

相关文章:

  • 百度网站推广费用多少物流网站前端模板下载
  • Docker-镜像存储机制-网络
  • 线性代数 - 从方程组到行列式
  • 景德镇做网站公司中国邮政做特产的网站
  • 【Linux】进程间通信(三)System V 共享内存完全指南:原理、系统调用与 C++ 封装实现
  • 记一次cssd无法启动故障处理
  • 开源 Objective-C IOS 应用开发(一)macOS 的使用
  • ElasticSearch详解(篇一)
  • flash网站价格网站推广的特点
  • 【C++ 面试题】内存对齐
  • busybox:启动阶段的静态 IP 配置过程
  • k8s 中遇到Calico CrashLoopBackOff 的解决方法
  • zookeeper单机版安装
  • 【Excel导入】读取WPS格式嵌入单元格内的图片
  • 福清建设银行网站网红营销的作用
  • 34节点配电网牛顿-拉夫逊潮流计算 + 分布式电源(DG)多场景分析的 MATLAB
  • 分布式专题——53 ElasticSearch高可用集群架构实战
  • 电子商务网站建设与设计网站常州建设
  • 学习编程好么 | 编程的好处与学习路径分析
  • 从中间件的历史来看移动App开发的未来
  • Faster-Whisper:更快更好的开源Asr模型
  • ubuntu部署whisper+speaker_large+qwen【gradio界面版】
  • 阿里云通过中国信通院首批安全可信中间件评估
  • 正点原子【第四期】Linux之驱动开发学习笔记-12.1 Linux 阻塞和非阻塞 IO 实验
  • 做网站fjfzwl门户wordpress主题下载
  • Elasticsearch的用法
  • LLMChain for Chat Models in LangChain
  • 【JAVA进阶】SpringBoot启动流程深度解析:从main方法到应用就绪的完整旅程
  • 昆明建设厅培训网站创意设计文案
  • 如何为虚拟机配置多渠道、可聚合、更智能的告警通知机制?