发布时间:2026/7/14 22:07:50
LangChain 高阶模式:Multi-agent —— 多 Agent 协作 本文是 LangChain「高阶模式」系列的第 1 篇。在走完基础概念、工具调用、输出交互之后我们开始进入更复杂的编排领域——让多个 Agent 协作完成单个 Agent 难以胜任的任务。一、概念什么是 Multi-agentMulti-agent多 Agent 协作是指由多个独立的 Agent 实例共同完成一个任务每个 Agent 各自拥有独立的指令system prompt、工具集和上下文窗口彼此通过消息传递或共享状态来协调工作。打个比方单 Agent 像一个全能员工什么活都自己干多 Agent 像一个小团队每人有专长通过分工和沟通完成任务。Multi-agent 的核心要素要素说明Agent 分工每个 Agent 有独立的角色和职责研究员、编码员、审查员……通信机制Agent 之间如何传递信息——共享 state、handoff、消息队列调度模型谁来决策下一步派谁——中心化Supervisorvs 去中心化Swarm状态隔离子 Agent 的上下文是否独立哪些信息需要共享一句话总结Multi-agent 是把一个全能的 Agent拆成多个专精的子 Agent通过通信和调度协调工作。二、价值为什么需要多个 Agent1. 上下文天花板单 Agent 的问题不是不够聪明而是上下文窗口装不下。复杂任务涉及几十条业务规则——system prompt 越长注意力越分散。把任务拆给多个 Agent每个 Agent 只关注自己的子任务上下文更聚焦。2. 工具隔离与权限控制单 Agent 模式下所有工具对模型可见——既有读数据库又有删数据库风险很高。多 Agent 可以做到研究员只有读取权限操作员有写入权限但需 Supervisor 审批审查员只有校验权限。每个 Agent 的工具集最小化符合最小权限原则。3. 并行执行Supervisor 分解任务 ├─→ 研究员 Agent查文档─────┐ ├─→ 编码员 Agent写代码─────┤ 三路并行 └─→ 测试员 Agent跑测试─────┘4. 专业化提升质量维度单 AgentMulti-agentSystem prompt一段超长提示词每人一段简短专精提示词工具集所有工具混在一起每人只暴露需要的工具注意力随上下文增长而分散每人聚焦自己的子任务错误恢复全局回滚单个 Agent 失败不影响其他扩展性提示词越写越长加 Agent 即可5. 复用性一个代码审查员 Agent定义好之后可以在多个项目中复用——单 Agent 项目做不到这种粒度的复用。核心价值Multi-agent 不是让一个 Agent 更强而是让多个专精的小 Agent各司其职——通过分工、隔离和并行解决单 Agent 在上下文、权限和扩展性上的天花板。三、用法LangGraph 中的 Multi-agent 实现LangGraph 是 LangChain 生态中实现 multi-agent 的核心框架。它基于有向图定义 Agent 之间的流转关系——每个 Agent 是一个节点边定义了通信和调度逻辑。用法 1Supervisor 模式——中心化调度Supervisor 是最经典的 multi-agent 模式一个主管 Agent负责分析任务、分派子 Agent、汇总结果。子 Agent 不直接通信都通过 Supervisor 中转。from langgraph.graph import StateGraph, END from langgraph.prebuilt import create_react_agent from langgraph_supervisor import create_supervisor from langchain_deepseek import ChatDeepSeek from typing import TypedDict, Annotated from langgraph.graph.message import add_messages class MultiAgentState(TypedDict): messages: Annotated[list, add_messages] next: str model ChatDeepSeek(modeldeepseek-chat) researcher create_react_agent( modelmodel, tools[search_tool, read_doc], nameresearcher, prompt你是研究员负责查找信息。不要修改任何代码。, ) coder create_react_agent( modelmodel, tools[read_code, write_code, run_test], namecoder, prompt你是编码员负责编写代码。不要做信息检索。, ) supervisor create_supervisor( agents[researcher, coder], modelmodel, prompt你是项目主管。分析请求分派给合适的人\n - 需要查资料 → 派 researcher\n- 需要写代码 → 派 coder\n - 任务完成 → 输出 FINISH, ) builder StateGraph(MultiAgentState) builder.add_node(supervisor, supervisor) builder.add_node(researcher, researcher) builder.add_node(coder, coder) builder.set_entry_point(supervisor) builder.add_edge(researcher, supervisor) builder.add_edge(coder, supervisor) builder.add_conditional_edges(supervisor, lambda s: s[next], { researcher: researcher, coder: coder, FINISH: END, }) graph builder.compile()Supervisor 模式的精髓子 Agent 之间互不知晓调度逻辑集中在 Supervisor 一个节点上。用法 2Swarm 模式——去中心化 HandoffSwarm 模式没有中心调度者每个 Agent 通过handoff交接把任务转给另一个 Agentfrom langgraph.prebuilt import create_react_agent from langgraph.swarm import create_swarm from langchain_deepseek import ChatDeepSeek model ChatDeepSeek(modeldeepseek-chat) support_agent create_react_agent( modelmodel, namesupport, tools[lookup_order, cancel_order, handoff_to_billing, handoff_to_tech], prompt你是客服。遇到账单问题 → handoff_to_billing技术问题 → handoff_to_tech, ) billing_agent create_react_agent( modelmodel, namebilling, tools[check_invoice, process_refund, handoff_to_support], prompt你是账单专家。完成后 handoff_to_support。, ) tech_agent create_react_agent( modelmodel, nametech, tools[check_server, restart_service, handoff_to_support], prompt你是技术支持。完成后 handoff_to_support。, ) swarm create_swarm( agents[support_agent, billing_agent, tech_agent], default_active_agentsupport, modelmodel, ) result swarm.invoke({messages: [{role: user, content: 我的服务器宕机了}]})Swarm 与 Supervisor 的关键区别维度SupervisorSwarm调度方式中心化Supervisor 决策去中心化Agent 自主 handoff路由逻辑集中在 Supervisor 节点分散在各 Agent 的 handoff 工具中适用场景任务有明确的分解和审批流对话式的、动态路由场景用法 3Handoff 工具——子 Agent 作为工具调用将一个子 Agent 包装成工具让 Supervisor 像调用函数一样调用子 Agentfrom langgraph.prebuilt import create_react_agent from langgraph_supervisor import create_supervisor from langchain_deepseek import ChatDeepSeek model ChatDeepSeek(modeldeepseek-chat) def create_research_subagent(): return create_react_agent( modelmodel, tools[web_search, scrape_page], nameresearcher, prompt你是研究员。搜索并返回结构化结果。, ) def create_writer_subagent(): return create_react_agent( modelmodel, tools[save_draft], namewriter, prompt你是写手。根据研究员的资料撰写文章。, ) supervisor create_supervisor( agents[create_research_subagent(), create_writer_subagent()], modelmodel, prompt你是项目经理。\n1. 先调用 researcher 收集资料\n 2. 再调用 writer 撰写文章\n3. 完成后输出 FINISH, output_modelast, )这种模式下子 Agent 对 Supervisor 而言就像增强版工具——输入一段 prompt输出一段结果中间的子 Agent 循环对外部透明。用法 4状态共享——State 如何在不同 Agent 间流转Multi-agent 的核心难点是状态管理——哪些信息共享哪些隔离from typing import TypedDict, Annotated from langgraph.graph.message import add_messages class SharedState(TypedDict): messages: Annotated[list, add_messages] # 共享所有 Agent 可见 task_context: str # 共享全局任务上下文 # 私有状态通过子图的 private_state 机制实现不暴露给其他 Agent # 子图实现状态隔离 def build_sub_agent_with_private_state(agent_name: str): class PrivateState(TypedDict): internal_scratchpad: str # 只有这个 Agent 能看到 local_files: list[str] # 只有这个 Agent 能访问 builder StateGraph(PrivateState) # ... 子 Agent 内部逻辑 return builder.compile()状态共享策略对比策略做法优点缺点完全共享所有 Agent 共用一个 state实现简单信息透明上下文膨胀最小共享只共享任务描述 结果摘要上下文精简隔离性好需要精心设计字段混合模式共享必要信息私有信息在 Agent 内部最佳平衡实现复杂度高推荐混合模式messages和task_context共享中间推理过程保持私有。四、原理Multi-agent 的底层机制1. 通信机制共享 State vs Handoff【共享 State 模式】Agent A ──写入──→ State ──读取──→ Agent B公告板【Handoff 模式】Agent A ──直接传递──→ Agent B接力棒维度共享 StateHandoff通信方向多对多广播一对一定向耦合度松耦合紧耦合并行友好度高低串行传递调试难度中等追踪 state 变化低流程线性LangGraph同时支持两种模式StateGraph天然是共享 stateCommand对象支持 handoff 式定向传递。2. 调度模型中心化 vs 去中心化【中心化】Supervisor唯一决策者→ Agent1 / Agent2 / Agent3执行者不互相通信【去中心化】Agent1 ←──handoff──→ Agent2 ←──handoff──→ Agent3彼此直连选择建议场景推荐模式任务有清晰的分层结构分析 → 设计 → 开发 → 测试Supervisor对话式路由用户问题类型多变Swarm需要审批流或人工介入Supervisor审批者为特殊节点Agent 之间需要频繁协商Swarm / Peer-to-Peer3. 子 Agent 隔离隔离是 multi-agent 系统的安全基石发生在三个层面工具隔离researcher 只有 [search, read]coder 只有 [write, run]——工具集不重叠上下文隔离Agent A 的内部推理不暴露给 Agent B——通过 private_state 或子图实现权限隔离Agent 不能访问超出其角色的资源——结合 Guardrails 和 HITL 控制在 LangGraph 中使用子图subgraph实现天然隔离researcher_graph build_researcher_graph().compile() coder_graph build_coder_graph().compile() builder.add_node(researcher, researcher_graph) builder.add_node(coder, coder_graph)子图内部的 state、工具、prompt 完全独立——父图只能通过节点输入输出与之交互。4. 执行流程以 Supervisor 模式为例用户输入 → Supervisor 分析 → 路由决策检查 state[next]→ 子 Agent 执行内部 ReAct 循环思考→工具→观察→思考...→ 回到 Supervisor → 循环直到 FINISH关键洞察子 Agent 内部的 ReAct 循环对外部 Supervisor 完全透明——Supervisor 只看输入输出不关心中间过程。5. 与单 Agent 的深度对比维度单 AgentMulti-agent架构复杂度低一个 Agent 工具高多个 Agent 调度图 状态管理上下文管理全部塞进一个 context window每个 Agent 只加载需要的上下文工具安全性所有工具对模型可见靠 prompt 约束工具集最小化物理隔离并行能力不支持支持多 Agent 并行执行调试简单单条执行轨迹复杂需追踪跨 Agent 消息流成本低高多次调用 调度开销适用规模中小任务20 工具50 步大任务需分工、审批、并行决策框架任务超过 50 步且需要不同权限/工具集 → Multi-agent否则单 Agent 就够。6. 常见陷阱陷阱表现规避方法过度拆分3 步任务用了 5 个 Agent先单 Agent 跑通再考虑拆分Supervisor 瓶颈Supervisor 成了性能瓶颈Supervisor 只做路由不做业务状态污染Agent A 的输出被 Agent B 误解用结构化输出格式JSON Schema无限循环Agent 之间反复 handoff设置recursion_limit信息丢失子 Agent 输出被截断关键信息走共享 state不做摘要小原则能用单 Agent 搞定的不要上 Multi-agent。只有当任务在上下文“权限”并行三个维度中至少一个碰到天花板时多 Agent 才是合理选择。小结视角一句话概念多个专精 Agent 通过通信和调度协作替代单个全能 Agent价值突破单 Agent 的上下文天花板实现工具隔离、并行执行和专业分工用法Supervisor中心化调度、Swarm去中心化 handoff、子 Agent 即工具、混合状态共享原理共享 State / Handoff 两种通信模式中心化与去中心化调度子图天然隔离单 Agent 够用不拆分记住一件事Multi-agent 的核心不是Agent 越多越好而是“把对的工具给对的 Agent把对的任务派给对的人”——分工带来效率隔离带来安全但复杂度是你必须付出的代价。先单 Agent 跑通再考虑拆分。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

2026/7/14 22:02:50

Prolog声明式编程原理与实战:从家族推理到医疗规则引擎

1. 项目概述:为什么一个40岁的老语言,今天还在被AI工程师悄悄用着“Logic will get you from A to B. Imagination will take you everywhere.”——爱因斯坦这句话,放在Prolog身上,简直像量身定做的注脚。不是因为它多炫酷&#…

2026/7/14 22:02:50

遗传算法工程实践:从可调试框架到工业级参数优化

1. 遗传算法不是“黑箱”,是可拆解、可调试、可复现的工程工具你可能在论文里见过它被称作“仿生智能”“进化计算”,在面试中被问到“和梯度下降有什么区别”,在项目汇报里被一句“我们用了遗传算法优化参数”轻轻带过——但真正把它跑通、调…

2026/7/15 1:58:38

电路设计进阶:耦合电感与变压器的工程应用解析

1. 耦合电感与变压器的工程应用基础我第一次接触耦合电感是在设计反激式开关电源时,当时为了降低输出电流纹波,尝试在传统Buck电路基础上加入耦合电感。实测发现输出纹波从原来的120mV直接降到了40mV,这个改进让我对磁耦合器件产生了浓厚兴趣…

2026/7/15 1:58:38

PLA 技术:解锁空间蛋白互作,原位解析生命调控的分子密码

蛋白质是生命活动的核心功能执行者,而蛋白 - 蛋白相互作用(Protein-Protein Interaction, PPI)是细胞信号转导、代谢调控、免疫应答等几乎所有生命过程的分子基础。精准解析蛋白互作的存在状态、发生位置与空间分布,是理解生理病理…

2026/7/15 1:58:38

npm install报错:node-gyp依赖的Python环境配置全攻略

1. 为什么node-gyp需要Python环境? 如果你在前端开发中执行 npm install 时遇到类似 gyp ERR! stack Error: Cant find Python executable "python" 的错误,这通常意味着你的系统缺少node-gyp所需的Python环境。node-gyp是一个用Node.js编…

2026/7/15 1:58:38

C/C++与MySQL数据库交互:从环境配置到封装增删改查类

1. 环境配置:VS2017与MySQL的完美邂逅第一次用VS2017连接MySQL时,我盯着报错信息发呆了半小时——这像极了两个语言不通的人试图交流。后来发现,环境配置就是给它们配个翻译的过程。先确认你的MySQL安装路径下有这两个关键文件夹:…

2026/7/15 1:53:38

PyTorch超参优化实战:用Optuna实现自适应贝叶斯调参

1. 项目概述:为什么 PyTorch 用户越来越离不开 Optuna在 PyTorch 实验室里,你大概率经历过这样的深夜:模型结构调好了,数据管道跑通了,损失曲线也终于开始下降——但验证集准确率卡在 82.3% 就像焊死了一样&#xff0c…

2026/7/14 12:47:32

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南

3步解锁音乐自由:ncmdumpGUI终极NCM文件解密转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#…

2026/7/14 19:23:19

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境

CANoe 19 SP3 配置 GB/T 27930-2023 A类系统:3步搭建BMS仿真测试环境随着新能源汽车行业的快速发展,充电通信协议的标准化和测试验证变得尤为重要。GB/T 27930-2023作为中国智能充电协议的最新版本,对充电机与电动汽车之间的通信提出了更严格…

2026/7/14 18:30:06

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡

3步搞定RTL8852BE驱动:从零开始配置Wi-Fi 6网卡 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Linux系统无法识别RTL8852BE Wi-Fi 6网卡而烦恼吗?&#x1f…

2026/7/15 0:08:29

【LINUX】驱动

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

2026/7/15 0:08:29

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

2026/7/15 0:08:29

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…

2026/7/14 12:47:31

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…