LangChain 高阶模式:Multi-agent —— 多 Agent 协作

发布时间:2026/7/14 22:08:09

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%免费】

相关新闻

难怪你的独立站没流量,手把手教你搞懂谷歌SEO的“抢流密码”——TDK全透析

难怪你的独立站没流量,手把手教你搞懂谷歌SEO的“抢流密码”——TDK全透析

2026/7/14 21:58:06

在做跨境电商或海外独立站的圈子里,经常能听到一句话:“天下苦没有流量久矣。”很多人砸了大把的广告费投Facebook、Google Ads,结果广告一停,流量立刻断崖式下跌。这时候,大家都会把目光转向SEO(搜索引擎优…

美国美转加物流怎么查

美国美转加物流怎么查

2026/7/14 21:58:06

从美国转运加拿大的包裹,物流信息怎么查?在跨境电商和北美贸易日益频繁的今天,“美转加”物流(从美国转运到加拿大)已成为许多商家和个人的刚需。无论是亚马逊FBA补货、一件代发,还是客户退货处理&#xff…

谷歌SEO十年总结:做好这几件事,独立站直接干到谷歌首页流量

谷歌SEO十年总结:做好这几件事,独立站直接干到谷歌首页流量

2026/7/14 21:58:06

很多人觉得做谷歌 SEO(搜索引擎优化)是一门玄学:天天盯着各种复杂的算法更新,做了一堆技术优化,结果网站流量还是死水一潭。但在跨境电商和独立站圈子里摸爬滚打整整10年,见证了无数算法的起起落落&#xf…

Claude Code接入DeepSeek API:终端AI编程助手配置指南

Claude Code接入DeepSeek API:终端AI编程助手配置指南

2026/7/14 23:18:12

在实际编程工作中,很多开发者都希望有一个能在终端内直接使用的AI编程助手,既能理解代码上下文,又能快速生成和优化代码片段。Claude Code作为一款终端内的AI编程工具,配合DeepSeek的强大模型能力,可以显著提升日常开发…

【需求工程】统一建模语言UML类图中关联、多样性和角色

【需求工程】统一建模语言UML类图中关联、多样性和角色

2026/7/14 23:18:12

UML类图:关联、多样性、角色 完整解读 这是UML类图的基础知识点,分为图示样例 文字定义两部分,我拆开逐点讲清楚。 一、先看懂上面的建模样例(人 ↔ 车辆) 1. 两个「类」 人:属性 姓名、出生日期车辆&…

AI Agent Skills实战:流程封装与复用技术详解

AI Agent Skills实战:流程封装与复用技术详解

2026/7/14 23:18:12

1. Agent Skills入门:把重复流程封装成可复用的能力包最近在AI领域,Agent Skills这个概念越来越火。简单来说,它就是把那些你每天要重复操作的流程打包成一个"技能包",下次要用的时候直接调用就行。就像你手机里的快捷指…

遗传算法工业级调参与可解释性实践指南

遗传算法工业级调参与可解释性实践指南

2026/7/14 23:18:12

1. 项目概述:从“会跑”到“跑得明白”的遗传算法进阶实践你手头刚跑通一个遗传算法示例,种群迭代了200代,目标函数值从1500掉到了87,屏幕上跳着一串数字——但你心里没底:这结果靠谱吗?为什么交叉概率设0.…

工业负载控制:TPD2017FN与PIC18LF45K50的智能解决方案

工业负载控制:TPD2017FN与PIC18LF45K50的智能解决方案

2026/7/14 23:18:12

1. 工业负载控制的核心挑战与方案选型在工业自动化现场,电感和电阻负载的控制一直是工程师面临的棘手问题。去年我在某汽车零部件生产线升级项目中,就曾遇到过电磁阀频繁烧毁的故障——这正是由于感性负载的反电动势没有得到妥善处理。经过多次试验&…

【冷冻电镜】IMOD实战:从零构建双轴断层图(Etomo全流程解析)

【冷冻电镜】IMOD实战:从零构建双轴断层图(Etomo全流程解析)

2026/7/14 23:08:12

1. 初识IMOD与Etomo:冷冻电镜断层重建的瑞士军刀第一次接触冷冻电镜断层成像时,我被IMOD这个开源软件包彻底惊艳到了。它就像生物电镜领域的瑞士军刀,而其中的Etomo图形界面更是让复杂的断层重建流程变得可视化。记得当时实验室刚获得一批双轴…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/13 20:43:10

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

2026/7/14 0:06:37

1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am…

2026普通文员学数据分析的价值

2026普通文员学数据分析的价值

2026/7/14 0:06:37

一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a…

2026从计划员到主管,生产管理者学数据分析有用吗?

2026从计划员到主管,生产管理者学数据分析有用吗?

2026/7/14 0:06:37

一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&…