73-LangGraph多Agent状态机-Agent握手交接-并行汇聚与故障恢复
文章目录【73.PythonAI】用LangGraph实现多Agent状态机Agent间的握手、交接与故障恢复导入语1 ~ 多Agent状态机总览1.1 三大工程难题2 ~ State设计多Agent共享的交接单2.1 字段按Agent归属分区2.2 Agent节点只负责自己的一亩三分地3 ~ 并行执行与汇聚3.1 fan-out / fan-in 的实现3.2 并行vs串行的收益4 ~ 故障恢复机制4.1 三级降级策略4.2 用条件边做降级路由4.3 故障恢复决策表5 ~ 多Agent状态机的调试思考 总结结尾【73.PythonAI】用LangGraph实现多Agent状态机Agent间的握手、交接与故障恢复文章简介本文讲解如何用LangGraph构建生产级的多Agent状态机。在第62篇单Agent状态图的基础上本文聚焦多Agent场景特有的三个工程难题Agent间的状态传递一个Agent的产物如何干净地交给下一个、并行执行与汇聚多个Agent同时干活再合并结果、以及故障恢复机制某个Agent执行失败后如何重试/降级/人工接管。通过一个调研写作翻译三Agent并行协作的完整实现配上Mermaid有向图展示状态流转与汇聚节点设计适合已经用过LangGraph单Agent流程、需要向多Agent编排进阶的开发者。 个人主页源码骑士❄专栏传送门《Android开发基础》《python基础课程》⭐️热衷从源码视角拆解技术底层原理将复杂架构讲得通俗易懂 源码骑士的简介5年Android Framework系统开发经验曾主导多项系统级性能优化专项技术栈覆盖Android系统全链路Binder/Handler/AMS/WMS/启动流程及Java后端全家桶Spring MyBatis Redis Oracle累计产出原创技术文章100篇文章以流程图为特色被读者评价为看一篇胜过啃一周源码导入语用LangGraph跑通一个单Agent审批流之后你自然会想能不能让两个Agent并行干活比如一个Agent在调研资料的同时另一个Agent在写报告框架最后第三个Agent把两者合并想法很美好实操全是坑并行的结果怎么合并一个Agent挂了整个流程怎么办状态在Agent之间传来传去怎么保证不丢字段这篇文章就用一个完整的案例把多Agent状态机的三大难题一次解决。1 ~ 多Agent状态机总览失败重试成功重试失败开始任务分发节点调研Agent写作Agent汇聚节点等待两个分支完成翻译Agent结束重试/降级降级路径跳过调研直接写1.1 三大工程难题难题本质问题本文方案状态传递下游Agent需要上游的哪些字段显式State schema 增量更新并行汇聚并行分支的结果怎么合并LangGraph的fan-out/fan-in故障恢复单点失败拖垮整个流程try-except包装 条件边降级2 ~ State设计多Agent共享的交接单2.1 字段按Agent归属分区fromtypingimportTypedDict,OptionalclassTeamState(TypedDict):# 公共输入topic:str# 调研Agent的产物research_notes:Optional[str]research_status:str# pending/done/failed# 写作Agent的产物draft:Optional[str]draft_status:str# 翻译Agent的产物translated:Optional[str]# 全局控制error:Optional[str]设计要点每个Agent只写自己的字段读别人的字段。这比所有Agent共用一个result字段清晰得多——出了问题一眼就能看出是哪个Agent的产物缺失。2.2 Agent节点只负责自己的一亩三分地defresearcher_node(state:TeamState)-dict:调研Agent只更新自己的字段try:notessearch_and_summarize(state[topic])return{research_notes:notes,research_status:done}exceptExceptionase:return{research_status:failed,error:str(e)}defwriter_node(state:TeamState)-dict:写作Agent可以先写框架不强依赖调研draftllm.invoke(f为主题{state[topic]}写一份报告初稿).contentreturn{draft:draft,draft_status:done}defmerge_node(state:TeamState)-dict:汇聚节点把调研结果融入初稿ifstate[research_status]done:finalllm.invoke(f初稿{state[draft]}\n调研资料{state[research_notes]}\nf请用调研资料充实初稿).contentelse:# 调研失败的降级直接用初稿finalstate[draft]return{draft:final}3 ~ 并行执行与汇聚3.1 fan-out / fan-in 的实现LangGraph中多条出边指向不同节点就是并行分发多条入边汇入同一节点就是汇聚fromlanggraph.graphimportStateGraph,END workflowStateGraph(TeamState)workflow.add_node(dispatch,lambdas:{})# 分发节点workflow.add_node(researcher,researcher_node)workflow.add_node(writer,writer_node)workflow.add_node(merge,merge_node)workflow.add_node(translator,translator_node)workflow.set_entry_point(dispatch)# fan-outdispatch同时触发两个并行分支workflow.add_edge(dispatch,researcher)workflow.add_edge(dispatch,writer)# fan-in两个分支都完成后才进入mergeworkflow.add_edge(researcher,merge)workflow.add_edge(writer,merge)workflow.add_edge(merge,translator)workflow.add_edge(translator,END)appworkflow.compile()关键认知LangGraph的汇聚是自动的——merge节点会等所有指向它的上游分支都完成才执行。你不需要自己写计数器或锁。3.2 并行vs串行的收益串行调研(8s)→ 写作(6s)→ 翻译(4s)18秒 并行max(调研8s, 写作6s)→ 汇聚(2s)→ 翻译(4s)14秒 ↓ 节省22%任务越独立、单个任务越耗时并行收益越大。4 ~ 故障恢复机制4.1 三级降级策略defresilient_researcher(state:TeamState,max_retry2)-dict:forattemptinrange(max_retry1):try:notessearch_and_summarize(state[topic])return{research_notes:notes,research_status:done}exceptRateLimitError:ifattemptmax_retry:time.sleep(2**attempt)# 指数退避continuereturn{research_status:failed,error:API限流重试耗尽}exceptExceptionase:return{research_status:failed,error:str(e)}4.2 用条件边做降级路由defroute_after_research(state:TeamState)-str:调研后决定走哪条路returnmerge# 无论成败都进merge由merge内部决定降级策略# 更激进的方案失败直接走fallback节点workflow.add_conditional_edges(researcher,lambdas:mergeifs[research_status]doneelsefallback)4.3 故障恢复决策表故障类型策略实现API限流/超时重试指数退避最多2~3次工具不可用降级跳过该Agent下游用默认输入LLM输出格式错误重试兜底重新生成仍失败则返回占位文本状态字段缺失校验merge节点检查上游status字段5 ~ 多Agent状态机的调试# 开启流式输出观察每个节点的执行foreventinapp.stream({topic:异步框架对比,research_status:pending,draft_status:pending}):fornode_name,outputinevent.items():print(f[{node_name}] 输出字段:{list(output.keys())})多Agent流程的调试口诀盯状态字段不盯打印日志。每个节点只更新自己负责的字段任何字段异常都能直接定位到责任Agent。思考 总结多Agent状态机的核心是分区状态设计每个Agent一个专属字段区读公共区、写私有区——职责边界清晰了协作才不会乱。LangGraph的fan-in是自动汇聚多条入边的节点天然等待所有上游完成这是它比手写asyncio编排优雅的地方。故障恢复要分层节点内重试抗抖动→ 条件边降级抗单点失败→ merge内兜底保证最终有输出三层缺一不可。并行的前提是任务独立如果写作Agent必须等调研结果才能动笔强行并行只会得到两个互相等待的节点。从单Agent流程到多Agent状态机本质是从程序设计走向系统设计——你考虑的不再只是逻辑对不对而是分工、容错和协作效率。结尾各位小伙伴本文的内容到这里就全部结束了源码骑士在这里再次感谢您的阅读源码骑士 — Android Framework 全栈开发关注跟博主一起从源码视角深耕底层原理见证每一次成长❤️点赞让优质内容被更多人看见让知识传递更有力量⭐收藏把核心知识点存好在需要时随时查、随时用评论分享你的经验或疑问评论区一起交流避坑一键四连不要忘记给博主一键四连哦️寄语技术之路难免有困惑但同行的人会让前进更有方向结语多Agent协作不是把Agent数量堆上去而是把分工、交接、容错这三件事设计明白。画好状态图再写代码你的多Agent系统就成功了一半。不要忘记给博主一键四连哦

相关新闻

C++与C#深度对比:内存管理、并发模型与实战选型指南

C++与C#深度对比:内存管理、并发模型与实战选型指南

1. 项目概述:为什么需要对比C与C#? 在技术社区里,关于C和C#孰优孰劣的讨论,几乎每隔一段时间就会掀起一波热潮。新手开发者常常会问:“我该学C还是C#?” 而资深工程师在技术选型时,也免不了要在…

2026/7/24 5:39:26阅读更多 →
mybatis的typeHandler 作用

mybatis的typeHandler 作用

在 MyBatis 中,TypeHandler(类型处理器)扮演着 **“翻译官”** 或 **“桥梁”** 的角色。它的核心作用是:**在 Java 数据类型和 JDBC 数据库数据类型之间进行相互转换。**因为 Java 的类型(如 String, Date, Enum, 自定…

2026/7/24 5:39:26阅读更多 →
深入解析TI BQ28Z610-R1电量计:阻抗追踪算法与智能BMS设计

深入解析TI BQ28Z610-R1电量计:阻抗追踪算法与智能BMS设计

1. 项目概述与核心价值在锂离子电池驱动的设备里,我们最怕两件事:一是用着用着突然没电关机,数据都没来得及保存;二是充电时管理不当,要么充不满影响体验,要么过充引发安全隐患。解决这些问题的核心&#x…

2026/7/24 5:39:26阅读更多 →
MediaPipe实时面部关键点检测技术与应用实践

MediaPipe实时面部关键点检测技术与应用实践

1. 项目概述在计算机视觉领域,面部关键点检测是一项基础且重要的技术。基于MediaPipe的实时面部关键点检测方案,能够在普通计算设备上实现毫秒级的面部特征点定位。这个项目特别适合需要实时人脸分析的应用场景,比如虚拟化妆、表情识别、疲劳…

2026/7/24 7:07:43阅读更多 →
深入解析MSPM33 DEBUGSS:从SWD接口到安全调试的嵌入式实战指南

深入解析MSPM33 DEBUGSS:从SWD接口到安全调试的嵌入式实战指南

1. 项目概述与DEBUGSS核心价值在嵌入式开发的日常里,调试器与目标芯片之间的那根线,往往是决定项目成败的生命线。你是否有过这样的经历:代码下载后毫无反应,单步执行时变量值“飘忽不定”,或者设备进入低功耗后调试器…

2026/7/24 7:07:43阅读更多 →
LLM API请求全流程解析:从令牌化到流式传输的工程实践

LLM API请求全流程解析:从令牌化到流式传输的工程实践

1. 先搞清楚一次 LLM 请求到底包含哪些环节 当你调用一个大语言模型(LLM)时,无论是通过 OpenAI、Claude、DeepSeek 的 API,还是本地部署的开源模型,背后都是一套完整的请求-响应循环。这个循环远不止“发个问题&#x…

2026/7/24 7:07:43阅读更多 →
Linux下Nginx服务启动失败排查与解决方案

Linux下Nginx服务启动失败排查与解决方案

1. 问题现象与初步诊断当你在Linux系统上尝试执行systemctl restart nginx命令时,终端突然抛出红色错误提示:"Failed to restart nginx.service: Unit nginx.service not found"。这个报错意味着systemd(现代Linux系统的服务管理器…

2026/7/24 7:07:43阅读更多 →
YOLOv5在实时情绪识别中的应用与优化

YOLOv5在实时情绪识别中的应用与优化

1. 项目背景与核心挑战情绪识别一直是计算机视觉领域的热门研究方向,而YOLOv5作为当前最流行的实时目标检测框架之一,将其应用于人物情绪识别具有独特的优势。这个项目本质上是要解决两个关键问题:一是如何准确检测人脸区域,二是如…

2026/7/24 7:07:43阅读更多 →
CNN-LSSVM混合模型在工业多输出预测中的应用

CNN-LSSVM混合模型在工业多输出预测中的应用

1. 项目背景与核心价值在工业预测和数据分析领域,多输出回归问题一直是个棘手挑战。传统单一模型往往难以同时处理高维特征提取和复杂非线性映射,这正是CNN-LSSVM混合模型大显身手的地方。去年在为某汽车零部件厂商做质量预测时,我亲历了传统…

2026/7/24 7:05:42阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

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

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

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

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

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

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

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

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

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

2026/7/23 18:58:18阅读更多 →