多智能体架构揭秘:从混乱到高效

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 给一个 Agent 挂 20 个工具,它反而开始犯迷糊------这不是模型不够聪明,是你让它一个人干了整个团队的活。本文拆透 Multi-Agent 多智能体 的核心机制:Handoff 交接 ,以及 Supervisor 主管Swarm 蜂群两大架构,最后用 LangGraph 手把手搭一个能跑起来的旅行规划多智能体,代码完整可复制。 |

01 一个 Agent,快要被工具"淹死"了

先讲个真实的坑。

你给一个 AI Agent 挂了 20 个工具:查订单、改地址、退款、发邮件、算运费......想着"一个 Agent 全搞定,多省事"。

结果它开始犯迷糊:用户明明问的是"退款",它却去查了订单;你把提示词写得更详细,它反而更不听话。

这不是模型不够聪明。是你让它一个人干了整个团队的活。

现实世界里,公司不会招一个"既做法务又做财务还兼前台"的员工。AI 也一样------这,就是 **Multi-Agent(多智能体)**在 2026 年全面爆发的根本原因。

今天这篇文章,我们把多智能体的核心架构讲透,再用 LangGraph 手把手搭一个能跑起来的多智能体系统。全程代码完整,装上就能跑。

02 为什么单个 Agent 会"撑不住"

把三个原因摊开看,你对多智能体的理解就完成一半了。

|--------------------------------------------------------------------|
| ① 工具选择困难症 工具越多,模型选错的概率越高。20 个工具摆在面前,"退款"和"查订单"的语义又很接近,选错几乎是必然。 |

|-------------------------------------------------------------------------------------------|
| ② 上下文被污染 每个工具的说明、每次调用的返回结果,都会塞进同一个上下文窗口。查订单的冗长数据留在里面,紧接着做退款决策时,它就成了噪音。上下文越脏,判断越差。 |

|---------------------------------------------------------------------|
| ③ 提示词精神分裂 "你要热情耐心地安抚用户"和"你要严格按财务规则拒绝退款",这两条写进同一个系统提示词,模型只能精神分裂。 |

打个比方:单 Agent 像一个全科医生,什么病都看;Multi-Agent 像一家专科医院,分诊台判断你该去哪个科室,各科医生只干自己最擅长的事。

03 核心机制:Handoff(交接)

多智能体要解决的关键问题只有一个:Agent 之间怎么把活交出去?

LangGraph 的答案是 Handoff(交接)。一个 Handoff 只需要描述清楚两件事:

|--------------------------------------------------------------|
| destination(交给谁):目标 Agent 是谁 payload(带什么):把哪些信息一起递过去 |

就这么简单。比如订机票 Agent 发现用户还要订酒店,它不需要自己去查酒店------直接 Handoff 给酒店 Agent,把"城市、日期、预算"打包递过去就行。

理解了交接,两大主流架构就是它的两种排列方式。

04 两大核心架构:Supervisor 与 Swarm

架构一:Supervisor(主管模式)

一个中心化的主管 Agent,所有任务由它分派,所有结果汇总到它这里。

就像项目经理:他不写代码,只负责"谁该干哪件事"。

|-------------------------------|
| 适合场景:职责边界清晰、需要统一决策和审计的场景。 |

架构二:Swarm(蜂群模式)

没有主管。每个 Agent 手里都有"转交工具",谁发现自己搞不定,就直接把控制权交给下一位。

就像同事之间互相转接电话------"这事不归我管,我帮你转给张三"。

|-------------------------------|
| 适合场景:流程动态、难以预先画出完整路由图的场景。 |

两者怎么选?

|--------|-----------------|-------------|
| 对比维度 | Supervisor 主管模式 | Swarm 蜂群模式 |
| 控制方式 | 中心化,主管统筹 | 去中心化,互相转交 |
| 可预测性 | 高,路径清晰 | 较低,动态灵活 |
| 调试难度 | 低,有统一审计轨迹 | 较高,链路分散 |
| LLM 调用 | 多(每次都要问主管) | 少(直接交接,省延迟) |
| 典型场景 | 客服工单分派、报告生成 | 多轮对话转接、专家接力 |

一句话记忆:要可控选 Supervisor,要灵活选 Swarm。

实际生产中,最常见的做法是混合------团队内部用 Swarm,团队之间用 Supervisor 串起来。

05 实战:搭一个"旅行规划多智能体"

我们做一个旅行助手,它要同时搞定三件事:订机票、订酒店、查天气。

如果塞进一个 Agent,它得同时管三套工具。现在我们把它们拆成三个专家 Agent,再用主管统一调度。

第一步,安装依赖(Python 3.10 以上):

复制代码
pip install -U langgraph langgraph-supervisor langchain-openai

第二步,定义三个"干活"的工具函数

复制代码
def book_flight(from_airport: str, to_airport: str) -> str:    """预订机票"""    return f"已成功预订 {from_airport} 飞往 {to_airport} 的航班。"def book_hotel(hotel_name: str) -> str:    """预订酒店"""    return f"已成功预订 {hotel_name}。"def get_weather(city: str) -> str:    """查询城市天气"""    return f"{city} 未来三天晴,气温 18-26 度。"

注意每个函数上那行 """...""" 文档字符串。它不是写给人看的,是写给模型看的------模型靠它判断该在什么时候调用这个工具。写不清楚,模型就选错。

第三步,把每个工具"包装"成独立的 Agent

复制代码
from langgraph.prebuilt import create_react_agentflight_agent = create_react_agent(    model="openai:gpt-4o",    tools=[book_flight],    prompt="你是机票预订助手,只负责机票相关事务。",    name="flight_agent",          # 名字必须显式指定)hotel_agent = create_react_agent(    model="openai:gpt-4o",    tools=[book_hotel],    prompt="你是酒店预订助手,只负责酒店相关事务。",    name="hotel_agent",)weather_agent = create_react_agent(    model="openai:gpt-4o",    tools=[get_weather],    prompt="你是天气查询助手,只负责天气查询。",    name="weather_agent",)

这里的 name 参数是关键。主管要靠这个名字来决定"把活派给谁",不写名字,多智能体就散了架

第四步,创建主管并把系统编译成图

复制代码
from langchain_openai import ChatOpenAIfrom langgraph_supervisor import create_supervisorsupervisor = create_supervisor(    agents=[flight_agent, hotel_agent, weather_agent],    model=ChatOpenAI(model="gpt-4o"),    prompt=(        "你是旅行规划主管。根据用户需求,把任务分派给"        "机票、酒店、天气三个助手,最后由你汇总成一份完整方案。"    ),).compile()

第五步,跑起来

复制代码
for chunk in supervisor.stream({    "messages": [{        "role": "user",        "content": "帮我订一张北京到上海的机票,再订外滩附近的酒店,顺便看看天气",    }]}):    print(chunk)    print("\n")

运行后你会看到一条清晰的执行链:主管先读懂需求 → 派给 flight_agent → 收到结果 → 再派给 hotel_agent → 再派 weather_agent → 最后由主管汇总成一份完整答复。

**整个过程你只写了一个 create_supervisor。**路由逻辑、消息传递、结果汇总,框架全包了。

|-----------------------------------------------------------------|
| 小提示model 不绑定特定厂商。把 "openai:gpt-4o" 换成你熟悉的模型即可,接口完全一致。 |

06 换个姿势:Swarm 版本

拿刚才的机票和酒店两个助手,改成蜂群模式,代码只换签名和最后一段。

第一步,给每个 Agent 装上"转交工具"

复制代码
from langgraph_swarm import create_swarm, create_handoff_tool# 定义转交通道to_hotel = create_handoff_tool(    agent_name="hotel_agent",    description="把用户转交给酒店助手",)to_flight = create_handoff_tool(    agent_name="flight_agent",    description="把用户转交给机票助手",)flight_agent = create_react_agent(    model="openai:gpt-4o",    tools=[book_flight, to_hotel],      # 多了转交工具    prompt="你是机票预订助手。用户还提到酒店时,转交给酒店助手。",    name="flight_agent",)hotel_agent = create_react_agent(    model="openai:gpt-4o",    tools=[book_hotel, to_flight],    prompt="你是酒店预订助手。用户还提到机票时,转交给机票助手。",    name="hotel_agent",)

第二步,创建蜂群并编译

复制代码
swarm = create_swarm(    agents=[flight_agent, hotel_agent],    default_active_agent="flight_agent",   # 谁是"第一接待").compile()

对比一下就很清楚了:

|---------------------------------------------------|
| Supervisor :每个 Agent 必须干完活回到主管汇报,主管再派下一个。 |

|------------------------------------------------------|
| Swarm :机票 Agent 发现要订酒店,直接把用户"转接"过去,中间没有主管插话。 |

少了一层往返,延迟更低,但代价是路径不再可预测。这就是灵活性和可控性的经典权衡。

07 生产落地,还得注意这 3 件事

Demo 跑通只是起点。真要上生产,这三件事绕不开。

|-------------------------------------------------------------------------------------------------------------------------------------------|
| ① State(状态)怎么设计 所有 Agent 共享一份 State,默认用 messages 累加。但多个 Agent 同时写同一份状态时会冲突,需要用 reducer 明确"合并规则"。比如让每个 Agent 的结果各自追加到列表,而不是互相覆盖。 |

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ② 一定要加 Checkpoint(持久化) LangGraph 支持把每一步状态存进数据库(如 SQLite、Postgres)。这一步带来的能力是质变的: · 进程崩了,能从断点恢复 · 危险操作前暂停,等人工确认再继续 · 结合 interrupt 实现人工介入(HITL) 涉及下单、付款、发邮件这类不可逆操作,HITL 不是可选项,是必需品。 |

|--------------------------------------------------------------------------------------------------------|
| ③ 可观测性决定你能不能睡着觉 多智能体比单 Agent 更容易出问题,因为链路长、参与者多。建议配合 LangSmith 做全链路追踪,把每一次 Handoff、每一次工具调用都记下来。 |

生产上最常见的两个坑:Agent 之间互相转交形成死循环 ,以及 Token 消耗失控。都需要用重试计数和调用上限来兜底。

✓ 总结

回到最开始那个问题:为什么单个 Agent 会撑不住?

因为它被要求同时做太多事------工具太多选不准,上下文太脏判断差,提示词太杂会精神分裂。

Multi-Agent 的本质,是承认"分工"这件事在 AI 世界里同样成立。

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Handoff 是机制------交给谁,带什么。 Supervisor 是集中调度------可控、好调试,但慢一点。 Swarm 是去中心转交------灵活、延迟低,但路径难预测。 而 LangGraph 的价值在于:它把上面这些复杂的编排,压缩成了 create_supervisorcreate_swarm 两行调用。 一句话决策:要可控选 Supervisor,要灵活选 Swarm,真实项目里两者混着用。 |

从"写一个更长的提示词",到"把问题拆给一个团队"------这是 2026 年做 AI 应用,最值得完成的一次思维转变。

相关推荐
一切皆是因缘际会1 小时前
物质计算机:计算即物理,安全即拓扑
人工智能·ai·计算机架构·计算机系统架构
AIGCmagic社区1 小时前
DeepSeek-V4.1-Flash 技术报告:输入激活 8B、KV 缓存每 token 890 字节
人工智能·aigc·ai多模态
AI推荐率1 小时前
GEO发稿套餐中的媒体更换,是否可能产生补差价?
人工智能
user_admin_god1 小时前
第 09 篇:实践一 —— 文本摘要(Map-Reduce 分块)
java·人工智能·spring boot·语言模型
Behaviour1 小时前
豆包手机助手消费者版发布:首款量产 AI 智能体手机 9 月 16 日开售
人工智能·语言模型·aigc·ai编程
prog_61031 小时前
【笔记】用agent手搓agent(一)
人工智能·llm·大语言模型·agent
三声三视1 小时前
一个卡片入场动画我返工 4 次:tri-lottie 规格单落地到 ArkTS 的踩坑记录
人工智能·ai·skillhub·tri-skills·tri-lottie
南京兴帝文化传媒有限公司1 小时前
AI大模型如何抓取和推荐无锡本地商户?GEO技术链路与POI权重算法拆解
大数据·人工智能·生活·geo 优化·ai搜索获客·无锡geo优化·长三角geo优化
是枚小菜鸡儿吖1 小时前
Windows 和 iPhone 怎么互传文件?用 PairDrop 搭一个自己的浏览器传输入口
服务器·人工智能·大模型