62-LangGraph有状态AI工作流-状态图-条件边-审批Agent实现
文章目录【62.PythonAI】LangGraph实战用状态图构建有状态的AI工作流导入语1 ~ 为什么需要状态图1.1 LangChain Chain 的局限1.2 真实业务需要什么2 ~ LangGraph 核心概念2.1 四大要素2.2 State 的定义2.3 状态图构建五步法3 ~ 完整案例文档审批 Agent3.1 节点函数实现3.2 完整工作流图3.3 执行工作流4 ~ 高级特性4.1 人工审核节点4.2 并行执行5 ~ LangGraph vs LangChain Chain思考 总结结尾【62.PythonAI】LangGraph实战用状态图构建有状态的AI工作流文章简介本文系统讲解LangGraph——LangChain生态中专门用于构建有状态AI工作流的框架。文章从DAG不够用了的痛点出发引出状态图StateGraph的核心概念节点Node、边Edge、条件边Conditional Edge、循环节点的设计哲学。通过一个完整的文档审批Agent案例逐行拆解状态定义、节点函数编写、条件路由和人工审核节点的实现并配有Mermaid状态机图展示Flow转换过程。适合已经用过LangChain做简单链式调用、想要构建多步骤、有分支和循环的复杂AI工作流的开发者。 个人主页源码骑士❄专栏传送门《Android开发基础》《python基础课程》⭐️热衷从源码视角拆解技术底层原理将复杂架构讲得通俗易懂 源码骑士的简介5年Android Framework系统开发经验曾主导多项系统级性能优化专项技术栈覆盖Android系统全链路Binder/Handler/AMS/WMS/启动流程及Java后端全家桶Spring MyBatis Redis Oracle累计产出原创技术文章100篇文章以流程图为特色被读者评价为看一篇胜过啃一周源码导入语LangChain 的 Chain 让你能把几个步骤串起来——先检索、再总结、最后翻译一条直线走到底。但真实的业务场景很少有一条直线这么简单。用户提交一个文档你需要先判断文档类型 → 如果是合同就走法律审核流程 → 审核不通过退回修改 → 修改后重新审核 → 最终归档。这里面有分支、有循环、有状态保持——这已经不是一条直线能搞定的事了。这就是 LangGraph 要解决的问题把AI工作流从一次性的直线调用升级为有状态的、带分支和循环的图执行。看完这篇文章你会用 LangGraph 画出自己的第一个状态图工作流。1 ~ 为什么需要状态图1.1 LangChain Chain 的局限LangChain Chain 的执行模式 输入 →[步骤1]→[步骤2]→[步骤3]→ 输出 ↑ 直线没有回头路 ↑Chain 本质是一个有向无环图DAG。数据从入口流向出口每步只能走一次不能回头、不能循环。1.2 真实业务需要什么合同报告通过不通过接收文档文档类型?法律审核内容审核审核通过?归档退回修改这个流程中G → C是一个循环——被驳回的文档要重新进入审核。Chain 做不到这一点LangGraph 可以。2 ~ LangGraph 核心概念2.1 四大要素概念说明类比State状态定义工作流在每一步之间传递的数据结构快递包裹上的运单信息Node节点执行具体逻辑的函数快递中转站Edge边固定路由——从节点A直接到节点B固定运输路线Conditional Edge条件边根据状态决定下一步去哪根据目的地选择不同路线2.2 State 的定义State 是整个工作流共享的数据对象每个节点都可以读写它fromtypingimportTypedDict,ListclassApprovalState(TypedDict):document:str# 原始文档内容doc_type:str# 文档类型合同/报告/其他review_result:str# 审核结果通过/不通过review_comment:str# 审核意见revision_count:int# 修改次数final_status:str# 最终状态2.3 状态图构建五步法fromlanggraph.graphimportStateGraph,END# 1. 创建状态图workflowStateGraph(ApprovalState)# 2. 添加节点每个节点是一个函数workflow.add_node(classify,classify_document)# 分类workflow.add_node(legal_review,legal_review)# 法律审核workflow.add_node(content_review,content_review)# 内容审核workflow.add_node(revise,revise_document)# 修改# 3. 设置入口workflow.set_entry_point(classify)# 4. 添加条件边workflow.add_conditional_edges(classify,route_by_type,# 路由函数{合同:legal_review,报告:content_review,})workflow.add_conditional_edges(legal_review,decide_next,{通过:END,不通过:revise,})# 5. 添加固定边workflow.add_edge(revise,legal_review)# 循环回去workflow.add_edge(content_review,END)# 编译appworkflow.compile()3 ~ 完整案例文档审批 Agent3.1 节点函数实现fromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelgpt-4,temperature0)defclassify_document(state:ApprovalState)-ApprovalState:分类节点判断文档类型promptf判断以下文档属于什么类型合同/报告/其他\n{state[document]}resultllm.invoke(prompt).content state[doc_type]result.strip()state[revision_count]0returnstatedeflegal_review(state:ApprovalState)-ApprovalState:法律审核节点promptf你是法务专员审核这份合同是否合规。 请给出通过或不通过并附审核意见。 合同内容{state[document]}修改次数{state[revision_count]}resultllm.invoke(prompt).contentif通过inresult:state[review_result]通过state[final_status]审核通过else:state[review_result]不通过state[review_comment]resultreturnstatedefrevise_document(state:ApprovalState)-ApprovalState:修改节点根据审核意见修改文档promptf根据以下审核意见修改合同 原合同{state[document]}审核意见{state[review_comment]}请输出修改后的合同全文。 resultllm.invoke(prompt).content state[document]result state[revision_count]1returnstatedefroute_by_type(state:ApprovalState)-str:根据文档类型路由returnstate[doc_type]defdecide_next(state:ApprovalState)-str:审核后决定下一步ifstate[review_result]通过:return通过# 最多修改3次超过就强制通过ifstate[revision_count]3:state[final_status]超过最大修改次数强制通过return通过return不通过3.2 完整工作流图合同报告通过不通过开始分类节点法律审核内容审核结束-归档修改节点3.3 执行工作流# 编译并执行appworkflow.compile()resultapp.invoke({document:甲方与乙方就软件开发项目达成以下协议...,})print(f审核结果{result[final_status]})print(f修改次数{result[revision_count]})print(f审核意见{result[review_comment]})4 ~ 高级特性4.1 人工审核节点不是所有审核都可以交给AI。LangGraph 支持在流程中插入interrupt断点让人工介入defhuman_review(state:ApprovalState)-ApprovalState:等待人工审核的节点设置断点# 这个节点什么也不做等待外部的 update_state 调用returnstate# 在编译时设置断点appworkflow.compile(interrupt_before[human_review]# 执行到此节点前暂停)# 执行到断点处resultapp.invoke({document:...})# 人工审核后手动推进app.update_state(config,{review_result:通过})resultapp.invoke(None,config)# 继续执行4.2 并行执行多个审核节点同时进行最后汇总结果fromlanggraph.graphimportStateGraph# 并行审核workflow.add_node(legal_check,legal_check)workflow.add_node(compliance_check,compliance_check)# 两个审核并行执行workflow.add_edge(classify,legal_check)workflow.add_edge(classify,compliance_check)# 汇聚节点两个都完成后才执行workflow.add_node(merge_results,merge)workflow.add_edge(legal_check,merge_results)workflow.add_edge(compliance_check,merge_results)5 ~ LangGraph vs LangChain Chain对比维度ChainLangGraph执行模式直线/顺序图支持分支和循环状态管理无数据流过即丢有State贯穿始终断点恢复不支持支持interrupt update_state复杂度天花板低高学习曲线平缓稍陡适合场景简单流水线复杂业务流程思考 总结LangGraph 解决的是 Chain 解决不了的状态问题当业务逻辑需要循环驳回修改、分支不同文档类型走不同流程、断点人工审核Chain 就力不从心了。State 是核心定义好 State 的数据结构就定义好了工作流中能传递什么、能记住什么。State 设计得不好后面所有节点都会跟着受限。条件边是灵活性的来源没有条件边的工作流就是一条死路。有了条件边同一个输入可以根据不同状态走出完全不同的执行路径。interrupt 让人机协作成为可能不是所有决策都适合AI来做。LangGraph 的断点机制让你在AI流程中保留人工把关的环节。先画图再写代码用 Mermaid 画出状态图确认流程逻辑没问题之后再翻译成 LangGraph 的 add_node 和 add_edge 调用。这比对着代码硬想要清晰得多。LangGraph 把 AI 工作流从问答机器人升级到了业务流程引擎。如果你的 AI 应用需要处理多步骤的、有状态的业务逻辑LangGraph 是当前最成熟的选择。结尾各位小伙伴本文的内容到这里就全部结束了源码骑士在这里再次感谢您的阅读源码骑士 — Android Framework 全栈开发关注跟博主一起从源码视角深耕底层原理见证每一次成长❤️点赞让优质内容被更多人看见让知识传递更有力量⭐收藏把核心知识点存好在需要时随时查、随时用评论分享你的经验或疑问评论区一起交流避坑一键四连不要忘记给博主一键四连哦️寄语技术之路难免有困惑但同行的人会让前进更有方向结语Chain 是单行道LangGraph 是立交桥——能转弯、能掉头、能并线。把本文的审批 Agent 案例在你的项目里跑通一遍状态图的思想你就掌握了。不要忘记给博主一键四连哦

相关新闻

61-LangChain-vs-LlamaIndex-选型对比-功能矩阵-混用实践

61-LangChain-vs-LlamaIndex-选型对比-功能矩阵-混用实践

文章目录【61.PythonAI】LangChain vs LlamaIndex:两大LLM框架功能矩阵与混用最佳实践导入语1 ~> 一张图看懂两个框架的定位1.1 核心差异:全栈编排 vs 数据专家1.2 功能覆盖矩阵1.3 选型速查2 ~> 数据处理管道:IngestionPipeline vs Do…

2026/7/13 0:09:58阅读更多 →
UE5 Niagara火焰特效性能优化实战:从GPU负载到移动端适配

UE5 Niagara火焰特效性能优化实战:从GPU负载到移动端适配

1. 项目概述:当火焰特效成为帧率杀手在UE5项目里,尤其是那些追求电影级视觉的开放世界或者大场景战斗游戏,一个熊熊燃烧的篝火、一次震撼的爆炸,往往是点燃玩家情绪的关键。Niagara作为虚幻引擎5中取代了老旧的Cascade的下一代粒子…

2026/7/13 0:04:58阅读更多 →
HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点

HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点

HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70个痛点 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经在Honey Select 2中遇到过…

2026/7/13 0:04:58阅读更多 →
SignatureTools安卓APK签名工具:告别命令行,图形化签名新体验

SignatureTools安卓APK签名工具:告别命令行,图形化签名新体验

SignatureTools安卓APK签名工具:告别命令行,图形化签名新体验 【免费下载链接】SignatureTools 🎡使用JavaFx编写的安卓Apk签名&渠道写入工具,方便快速进行v1&v2签名。 项目地址: https://gitcode.com/gh_mirrors/si/Si…

2026/7/13 1:15:09阅读更多 →
SAS迁Python不是语法翻译,而是数据工作流重构

SAS迁Python不是语法翻译,而是数据工作流重构

1. 项目概述:为什么把SAS代码迁移到Python不是“换工具”,而是重构数据工作流在金融风控建模、医药临床统计、大型国企报表系统这些地方,我见过太多人把“SAS迁Python”当成一场简单的语法翻译——打开SAS程序,对照着《SAS函数→P…

2026/7/13 1:15:09阅读更多 →
Translumo:你的游戏与视频实时翻译神器,打破语言障碍的终极方案

Translumo:你的游戏与视频实时翻译神器,打破语言障碍的终极方案

Translumo:你的游戏与视频实时翻译神器,打破语言障碍的终极方案 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Tr…

2026/7/13 1:15:09阅读更多 →
如何彻底解决《边缘世界》模组加载冲突:智能拓扑排序技术实战指南

如何彻底解决《边缘世界》模组加载冲突:智能拓扑排序技术实战指南

如何彻底解决《边缘世界》模组加载冲突:智能拓扑排序技术实战指南 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, com…

2026/7/13 1:15:09阅读更多 →
树上椰子检测数据集VOC+YOLO格式1030张1类别

树上椰子检测数据集VOC+YOLO格式1030张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1030标注数量(xml文件个数):1030标注数量(txt文件个数):1030标注类别…

2026/7/13 1:15:09阅读更多 →
CTF逆向实战:从RC4与Base64算法识别到解题脚本编写

CTF逆向实战:从RC4与Base64算法识别到解题脚本编写

1. 项目概述:一次典型的CTF逆向入门实战最近在带新人入门CTF逆向,发现很多朋友卡在“看懂了代码,但不知道怎么下手”的阶段。正好,CTFshow平台萌新赛的一道逆向题,完美地串联了RC4和Base64这两个在CTF中出场率极高的知…

2026/7/13 1:10:09阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →