首页/新闻资讯/正文详情

Day1 LangGraph 状态机与 Checkpoint

发布时间:2026/9/25 17:03:33 来源:云帆数科 栏目:资讯中心
Day1 LangGraph 状态机与 Checkpoint
1. 核心概念StateGraph / Node / Edge / CheckpointerStateGraph状态图StateGraph 是一种基于状态机的图编排框架。所有节点共享同一份State通常定义为TypedDict节点之间并不直接传递数据而是通过读写这份全局状态来完成通信。Node节点工作流中的执行单元每个节点只负责单一职责的业务逻辑如数据清洗、LLM 调用、工具执行。节点接收当前 State返回需要更新的字段。复杂场景下可使用子图SubGraph封装。Edge边节点之间的连接通道。分两种直接边无条件从一个节点到下一个节点。条件边Conditional Edge纯函数根据 State 的内容决定下一步路由到哪个节点。关键原则重试、分支等控制逻辑应该通过条件边实现而不是在节点内部写while循环。节点内循环会阻塞执行且无法被 Checkpointer 记录中间状态导致无法中断恢复。Checkpointer检查点/快照在每个 super-step调度步骤边界自动保存当前 State 完整快照的存储器。按thread_id隔离不同任务的历史记录。用途包括断点恢复、人工干预Human-in-the-loop、历史回溯Time Travel和审计。2. State 定义陷阱、Checkpointer 使用注意State 定义陷阱陷阱一State 过大导致存储爆炸Checkpointer 每次保存的是整个 State 的序列化快照。如果在 State 中直接存放大文件、超长文本、DataFrame 等快照体积会迅速膨胀。解法大对象只存指针如 OSS/S3 的 URL、数据库 ID真实数据放在外部存储中。陷阱二重试计数器字段膨胀每个需要重试的节点都定义一个retry_count_A、retry_count_B……字段会越来越多State 变得臃肿。解法用一个字典字段 Reducer 机制统一管理。定义attempts: Annotated[dict, operator.add]节点失败时返回{attempts: {node_name: 1}}框架自动累加无限节点扩展也不会新增字段。Checkpointer 使用注意super-step 边界落盘并非每次节点完成都存而是在一个调度步骤边界统一提交。并行节点在同一 super-step 内一起落盘。(用人话说就是一个节点内写三次循环这一起是一个快照通过判断反复进入这个节点三次会有三个快照interrupt 恢复会重跑节点节点内调用interrupt()挂起后恢复时该节点从头重新执行而不是从挂起点继续。节点逻辑需保证幂等或在 State 中记录已完成的子步骤避免重复副作用。thread_id 设计使用 UUID 或user_id:session_id格式不同用户/任务严禁复用否则状态串台。快照清理长期运行会产生海量快照需配置 TTL 或定期调用delete_thread清理。子图挂载只在外层父图挂 Checkpointer子图不重复挂载避免命名空间冲突和冗余存储。3. 为什么需要 CheckpointerMemorySaver 为什么不能上生产为什么需要 Checkpointer多轮/跨调用记忆同一thread_id多次 invoke自动延续上下文无需手动传递整份 State。Human-in-the-loop节点内interrupt()暂停人工审批后通过Command(resume...)从断点继续。审计与回放get_state_history(config)获取全部历史快照可定位问题、复现 bug、合规审计。容错恢复某节点失败后从上一 checkpoint 恢复已成功节点的结果不会重复执行。MemorySaver 为什么不能上生产MemorySaver或InMemorySaver官方定位仅为调试和测试用硬伤如下问题说明进程重启即丢​数据存在 RAM 中容器重建、Pod 重启后所有任务状态清零多实例不共享​多 worker / K8s 多副本部署时各进程内存隔离同一thread_id请求被路由到不同实例会失忆内存膨胀​长任务、大量 thread 会持续占用 RSS无淘汰机制无持久化/加密​不适合生产环境的多租户、PII 数据和合规要求生产选型单机轻量用SqliteSaver分布式/高可用用PostgresSaver官方推荐高性能缓存层可用RedisSaver需开启 AOF/RDB 持久化。

相关推荐

immudb 性能测试套件(performance test suite)实战指南:从基准压测到回归门禁
immudb 性能测试套件(performance test suite)实战指南:从基准压测到回归门禁

数据库安全后端 【免费下载链接】immudb immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history 项目地址: https://gitcode.com/gh_mirrors/im/immudb 点击查看 免费下载 导读 immudb 性能测试套件… · 2026/9/25 17:03:27

PaddleSpeech 实战:基于 CSMSC 数据集训练 HiFiGAN 神经声码器全流程指南
PaddleSpeech 实战:基于 CSMSC 数据集训练 HiFiGAN 神经声码器全流程指南

人工智能语音音频 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword… · 2026/9/25 17:03:21

Spring AI 与 DeepSeek 实战一:用 TaoToken 统一 Key 快速搭建智能对话应用
Spring AI 与 DeepSeek 实战一:用 TaoToken 统一 Key 快速搭建智能对话应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 17:03:08

C# is与as操作符区别详解:类型转换、模式匹配与安全编程实践
C# is与as操作符区别详解:类型转换、模式匹配与安全编程实践

1. 面试官问这道基础题,到底想考察什么?is和as是 C# 里每天都会碰到的两个操作符,也是面试中出现频率极高的 C# 基础题。我面试别人时经常拿这道题开场,原因很简单:它能一次性筛掉三种候选人——只会背概念的、只会用但… · 2026/9/25 17:30:04

m3u8下载原理与实战:从抓包定位到无损合并
m3u8下载原理与实战:从抓包定位到无损合并

1. 项目概述:为什么m3u8下载不是“点一下就完事”的技术活m3u8视频下载,听起来像浏览器右键“另存为”那么简单,但实际操作中,90%的人卡在第一步——连真正的m3u8地址都找不到。我做视频技术支撑这十多年,帮客户处理过… · 2026/9/25 17:29:58

Atlas 300V 24G部署YOLO全攻略:从硬件认知到模型推理优化
Atlas 300V 24G部署YOLO全攻略:从硬件认知到模型推理优化

最近后台收到一条挺有代表性的提问:Atlas 300V 24G是运算加速卡吗?紧跟着还有一条搜索是“atlas部署yolo”,意思是已经把卡拿到手了,接下来想让YOLO在这张卡上跑起来。这两个问题放在一起看,基本就是很多人在Atlas加速… · 2026/9/25 17:29:52

PyTorch量化感知训练QAT实战:从原理到部署的完整指南
PyTorch量化感知训练QAT实战:从原理到部署的完整指南

1. 为什么要在PyTorch里做量化感知训练搞模型部署的兄弟大概率都遇到过这个场景:实验室里FP32精度跑得好好的模型,一放到边缘设备或者移动端就拉胯——推理速度慢、内存占用高、功耗还大。量化就是把FP32的权重和激活值压缩成INT8甚至更低比特&#xff0… · 2026/9/25 17:29:52

PyTorch量化感知训练QAT实战:从fake quant到int8部署的踩坑经验
PyTorch量化感知训练QAT实战:从fake quant到int8部署的踩坑经验

量化感知训练(QAT)这件事,我前前后后在三四个项目里踩过坑,从最早把torch.quantization当成黑盒用,到后来被精度掉点折磨得怀疑人生,再到现在能比较从容地判断"这个模型该不该上QAT、该在哪个位置插fa… · 2026/9/25 17:29:51

WPScan 插件版本探测实战:基于 CHANGELOG.md 的 ChangeLog 动态查找器原理
WPScan 插件版本探测实战:基于 CHANGELOG.md 的 ChangeLog 动态查找器原理

网络安全漏洞扫描渗透测试应用安全CLI 【免费下载链接】wpscan WPScan WordPress security scanner. Written for security professionals and blog maintainers to test the security of their WordPress websites. Contact us via contactwpscan.com 项目地址: ht… · 2026/9/25 17:29:45

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码