62-LangGraph有状态AI工作流-状态图-条件边-审批Agent实现

发布时间:2026/11/2 2:41:29

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 案例在你的项目里跑通一遍状态图的思想你就掌握了。不要忘记给博主一键四连哦
延伸阅读

更多相关文章

2026/10/27 0:10:11

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

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

2026/10/30 11:28:12

语音转文字工具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/11/2 2:39:35

apt-get --download-only:内网离线安装与批量分发的完整指南

内网环境里装软件,最怕的不是缺包,而是明明有网却不敢开、能开却慢得离谱。apt-get install --download-only这个参数,就是给这种场景准备的一把"离线搬运钥匙"——它让 apt 只把 deb 包和依赖下载到本地缓存,不触发安装…

2026/11/2 2:39:35

OpenClaw启动失败:环境变量配置全解析与解决方案

1. OpenClaw启动失败的典型症状与环境变量关系剖析OpenClaw作为一款新兴的开源自动化工具,在启动阶段对环境变量有着极高的依赖性。根据社区统计数据显示,超过67%的启动失败案例都与环境变量配置不当直接相关。当你在命令行输入openclaw start后&#xf…

2026/11/2 2:39:34

Apache Superset:开源BI工具的核心技术与实践指南

1. Apache Superset:企业级数据可视化的开源利器在数据驱动决策的时代,商业智能(BI)工具已成为企业数据分析的基础设施。作为Airbnb开源的数据可视化平台,Apache Superset凭借其现代化的技术架构和丰富的可视化能力&am…

2026/11/2 2:39:34

2线制4-20mA误判真相:电压不是判据,250Ω位置才是关键

简介:本资源是一份面向工业自动化工程师、PLC/DCS系统调试人员及仪表维护技术人员的实用技术指南,聚焦4-20mA信号系统中极易混淆的二线制与四线制本质区别与工程判别方法。内容深入解析电源供给路径、模块端电压测量逻辑、西门子AI通道配置策略及DeltaV卡…

2026/11/2 2:39:34

.NET跨平台开发IDE评测与配置指南

1. 为什么.NET开发者需要现代化跨平台IDE?十年前我刚接触.NET开发时,Visual Studio几乎是唯一选择。但如今开发环境已发生翻天覆地的变化:团队使用Mac开发、部署到Linux服务器、需要对接前端Node.js生态... 传统IDE的局限性日益明显。我经手过…

2026/11/2 2:34:34

Windows桌面拖拽失效的底层原理与精准修复方案

1. 问题本质与真实场景还原 “桌面文件和图片拖动不了了”——这句话在日常办公、设计、教学、内容创作等几乎所有依赖图形界面操作的场景中,都可能突然出现。它不是某个特定软件的报错,而是一种系统级交互失灵:鼠标左键按住图标后无法移动&…

2026/11/1 0:01:26

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/1 1:01:33

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

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

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

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

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

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

2026/11/1 0:01:26

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/1 1:01:33

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑