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 进程。下一篇把这张图注册成服务让客户端能创建会话、提交运行、流式读取结果并在出问题时看到每个专家到底做了什么。赞或收藏 关注 我们下次再见

相关新闻

PTA基础编程题目集 7-14求整数段和(C++语言实现)

PTA基础编程题目集 7-14求整数段和(C++语言实现)

摘要:本文是PTA编程题"求整数段和"的题解,涵盖题目描述、输入输出格式及C语言实现,展示for循环遍历、累加求和与格式化输出方法。题目描述 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。 输入格式&#xff1a…

2026/11/1 20:15:24 阅读更多 →
联想拯救者工具箱终极指南:轻量级硬件控制解决方案

联想拯救者工具箱终极指南:轻量级硬件控制解决方案

联想拯救者工具箱终极指南:轻量级硬件控制解决方案 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 联想拯救者工…

2026/11/1 20:15:25 阅读更多 →
Umi-OCR完整指南:免费开源的离线OCR文字识别软件终极教程

Umi-OCR完整指南:免费开源的离线OCR文字识别软件终极教程

Umi-OCR完整指南:免费开源的离线OCR文字识别软件终极教程 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国…

2026/11/1 6:12:58 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻