langgraph教程系列-11-从单兵到团队-多智能体模式

发布时间:2026/9/24 4:20:50

langgraph教程系列-11-从单兵到团队-多智能体模式 本文是「LangGraph 教程系列」第 11 篇。写作时基于 langgraph 1.2.10、langchain 1.3.14、langchain-openai 1.4.1、Python 3.12。配套代码仓库 https://github.com/wxj006007/deep-research-assistant 本篇对应 tagv4。v3 已经把规划、研究和写作拆成了边界清晰的子图。可它们仍按固定顺序执行先研究再写作。资料缺了反方证据谁来要求补查资料足够时谁来决定不要再浪费一次搜索拆图解决的是封装团队化解决的是调度。本篇让研究助手拥有一名 Supervisor、研究员、审稿人和写作员。Supervisor 不亲自写答案而是根据共享状态和专家报告决定下一位该工作的角色。一、子图和 agent 不是一回事子图是组合手段。v3 的 researcher 子图把审批、搜索和评估循环关在自己的职责边界内父图不必知道它查了几轮。agent 则多了角色、目标和调度权。研究员只补证据审稿人只找覆盖缺口写作员只基于已批准资料成稿。它们都可以用子图实现但不会因为被装进子图就自动成为多智能体。渲染错误:Mermaid 渲染失败: Parse error on line 11: ...摘要] persist -- end([END]) super ----------------------^ Expecting AMP, COLON, PIPE, TESTSTR, DOWN, DEFAULT, NUM, COMMA, NODE_STRING, BRKT, MINUS, MULT, UNICODE_TEXT, got end研究员内部仍是第 10 篇的子图且每轮检索前仍会暂停等待人工审批。它不会因为变成一个专家就得到绕过人类决定的权限。二、三种拓扑先选最小的一种多智能体不是“角色越多越好”。常见形状有三种。模式谁决定下一步适合什么Supervisor一个中心调度者有统一交付物、需要审计和预算控制的研究任务Hierarchical上级把工作继续委派给下级有稳定部门层级的大型组织流程Swarm对等角色根据消息自行交接开放探索、角色可动态加入的任务本篇选 Supervisor。用户只提出一个研究问题最后也只需要一份答案中心调度者能把轮数上限、取消和持久化条件放在一个看得见的位置。hierarchical 和 swarm 并不更高级它们只是把控制权分散到更复杂的地方。三、共享状态不是共享一切专家应通过小而明确的字段契约协作而不是互相读取提示词或私有变量。classV4ResearchState(TypedDict,totalFalse):question:strdocs:Annotated[list[Doc],operator.add]expert_reports:Annotated[list[ExpertReport],operator.add]next_agent:Literal[researcher,critic,writer,finish]supervisor_turns:intmax_supervisor_turns:intanswer:strdocs是累积的共享证据expert_reports是同样累积的审计记录。报告必须带上作者和建议这样 Supervisor 看见“需要继续研究”时能知道它来自审稿人而不是猜测。长期记忆、thread_id和ResearchContext沿用 v3。它们仍由父图统一管理专家不能另开会话也不能跨过写作节点直接保存研究摘要。四、Supervisor 只分派工作Supervisor 的输出不是自由文本而是受限 JSON。它只可选择四个下一跳并在分派给研究员时给出下一条查询。defsupervisor_node(state:V4ResearchState)-dict[str,object]:responseget_llm().invoke([...])decision_load_json(response.content)next_agentstr(decision.get(next_agent,))ifnext_agentnotin{researcher,critic,writer,finish}:next_agentresearcherifnotstate.get(docs)elsecriticreturn{next_agent:next_agent,assignment:str(decision.get(assignment,)),current_query:str(decision.get(query,))orstate[question],supervisor_turns:state.get(supervisor_turns,0)1,}解析失败不能把图留在原地。示例采用保守回退没有资料就派研究员有资料就交给审稿人。写作员没有资料时也会被改派给研究员避免它用空上下文编答案。图的条件边只读取next_agent。builder.add_conditional_edges(supervisor,route_after_supervisor,{researcher:researcher,critic:critic,writer:writer,finish:finish,},)这让模型负责判断代码负责边界。模型不能靠一句提示词跳进一个未注册节点也不能自行执行持久化。五、专家报告让返工可见研究员完成其内部循环后先写一份报告再回到 Supervisor。审稿人检查全部资料并返回researcher或writer的建议。{agent:critic,summary:缺少不同持久化后端的取舍说明。,recommendation:researcher,}Supervisor 可以据此让研究员带着新的查询再跑一轮。这个返工不是把完整对话记录塞给每个模型而是让下一位专家读共享资料和结构化结论。职责越清楚后续接入来源核验员或合规审查员越不容易把主图改成一团条件分支。六、停止规则属于调度层团队协作特别容易出现“审稿人说还不够研究员又查一点”的无限回合。因此 v4 在父状态上保存supervisor_turns与max_supervisor_turns默认最多五次调度。超过预算时已有资料就交给写作员如实收尾没有资料就进入finish节点明确返回未收集到足够资料。人工拒绝仍由研究员子图返回cancelledSupervisor 立即结束且不会执行persist_memory。七、跑起来代码在src/v4_multi_agent.py。python-msrc.v4_multi_agent首次运行会在研究员的审批点暂停。用相同的thread_id传入Command(resume{action: approve})后图会从嵌套 checkpoint 恢复。演示会检查最终答案和调度次数实际开发还应覆盖审稿返工、预算耗尽和人工拒绝三条路径。到这里研究助手已经会组织一个小团队但它还只是本地 Python 进程。下一篇把这张图注册成服务让客户端能创建会话、提交运行、流式读取结果并在出问题时看到每个专家到底做了什么。赞或收藏 关注 我们下次再见
延伸阅读

更多相关文章

2026/9/21 12:28:52

开源目标检测数据集深度汇总|全网独家整理多尺度样本适配方案、通用航拍遥感工业全覆盖、助力YOLO小目标检测与工业缺陷高精度落地

目录 一、研究前言:目标检测数据集选型核心痛点与优化价值 二、目标检测数据集分类逻辑与核心评价维度 三、六大类开源目标检测数据集全维度详解 3.1 通用基准类数据集(学术评测、模型预训练、基线对比首选) 3.1.1 Pascal VOC2007+2012 3.1.2 MS COCO 2017 3.1.3 Ope…

2026/9/20 0:01:41

UE5第三人称相机系统深度解析:SpringArm与Camera组件实战优化指南

1. 项目概述:为什么Character相机与弹簧臂是UE5项目的基石在UE5里折腾过角色移动和视角控制的开发者,大概都经历过这样的阶段:一开始觉得不就是个相机跟着角色跑嘛,用个AttachToComponent绑上去不就行了?结果角色一转身…

2026/9/20 0:01:41

C++ 竞赛十大作弊算法,学了不一定无敌,但不学绝对吃亏。

在 C 算法竞赛(OI / ACM / 蓝桥杯)体系中,存在一类非常规优化技术,被圈内统称为“作弊级算法”。其并非考场违规舞弊,而是通过压榨编译器特性、CPU 硬件指令、位运算压缩、复杂度降维、编译期预计算等手段,…

2026/9/24 4:20:34

SSM计算机毕设之基于 SSM 的智能疫苗接种统计分析系统的设计与实现 基于 SSM 的新冠疫苗接种核验管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:20:34

SSM毕设选题推荐:基于 SSM 的新冠疫苗接种记录管理系统的设计与实现 基于 SSM 的社区新冠疫苗管控系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:20:34

【SSM课程设计/毕业设计】基于 Java+SSM 的公共疫苗防疫管理系统的设计与实现 基于 SSM+MySQL 的疫苗接种数据归档系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:20:34

【SSM计算机毕业设计案例】基于 SSM 的疫苗接种人员管理系统的设计与实现 基于 SSM+MySQL 的新冠疫苗库存管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:20:34

RK3588边缘AI实战:GStreamer硬解RTSP流与NPU推理融合管道搭建

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

2026/9/24 4:15:33

电赛E题硬件设计核心:多传感器接入与信号完整性实战

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

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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