Multi-Agent系统实战:如何让多个Agent握手协作

前两天折腾 Multi-Agent,三个 Agent 在那里互踢皮球,一个说"让 B 去处理",另一个说"这不归我管",场面一度非常尴尬。

说实话,单 Agent 现在已经挺成熟了,但你一旦想处理复杂任务------比如写一份调研报告还要自动配图表、发给团队、还要跟踪反馈------单 Agent 就捉襟见肘了。这时候就得让多个 Agent 分工配合了。

问题是,多 Agent 确实不好搞。搞了两天才跑通一个像样的流程,记录一下核心的坑和方案。

为什么需要多个Agent?

先说清楚一个基础问题:一个 Agent 不行吗?

还真不行。我用一个简单的例子说明:

假设你要开发一个电商 App 的首页。单 Agent 的做法是:让它写代码、设计 UI、写文案、还要测试。结果呢?代码写一半就开始写文案,改 UI 的时候又去翻代码结构。上下文一长,完全跑偏。

但 Multi-Agent 的做法是:

  • 产品 Agent:输出需求文档
  • 设计 Agent:根据需求生成 UI 设计稿
  • 开发 Agent:按设计稿写代码
  • 测试 Agent:检查代码质量

每个 Agent 只关注自己的事,上下文可控,效果反而更好。

我试过同一个任务,单 Agent 折腾了 10 轮对话还在自嗨,多 Agent 5 轮就走完了需求→设计→代码的链路。

Multi-Agent 的三种协作模式

玩了一圈下来,实际用得最多的就三种模式。

1. 顺序流水线

最简单的模式。Agent A 做完传给 Agent B,B 做完给 C。

python 复制代码
# 伪代码示意
result_a = agent_a.run(task)
result_b = agent_b.run(result_a)
result_c = agent_c.run(result_b)

适用场景:处理流程固定的任务,比如"收集→分析→总结"。

踩坑提醒:输出格式一定要定义清楚。我之前让 Agent A 输出 markdown,Agent B 解析 markdown,结果 Agent A 偶尔飘出一个 HTML 表格,Agent B 直接 parse 失败。解决方案是用 JSON schema 约束中间输出。

2. 路由/编排模式

一个"总管" Agent 负责调度,根据任务类型分发给不同的 Worker Agent。

python 复制代码
# Orchestrator 判断任务类型
orchestrator = Agent("你是任务分配员,判断任务类型并指派给合适的 Worker")
if task_type == "coding":
    result = coding_agent.run(task)
elif task_type == "writing":
    result = writing_agent.run(task)

这比第一种灵活得多。但我翻车的地方在:Orchestrator 有时候会"自作聪明",明明该给 coding agent 的任务,它觉得 writing agent 也能干,结果产出不伦不类。

解决方式:给 Orchestrator 一个白名单------每个 Worker Agent 的能力范围写死,超出范围直接报错而不是自己瞎猜。

3. 辩论/讨论模式

多个 Agent 各持观点,互相讨论,最终达成共识。

这种我最喜欢,也最难实现。比如做代码审查:

  • Agent A(严格派):这段代码性能不好,建议重写
  • Agent B(务实派):能跑就行,不要过度优化
  • Agent C(架构派):这个设计不符合 SOLID 原则

三个 Agent 吵架,最后由一个"裁判" Agent 综合意见给出最终建议。

这个模式的坑是------Agent 容易啰嗦,讨论个没完。我设了一个最大轮数(比如 3 轮),超过就强制输出结论。

让Agent互相"听懂"的关键

多 Agent 最容易被忽略的点:通信协议

这也是我踩的最大的坑。两个 Agent 对话,就像两个人用不同的语言聊天------你说 JSON,TA 说 YAML,谁也看不懂谁。

定义共享 Schema

所有 Agent 之间传输的数据,必须用同一个 Schema。我通常这么搞:

python 复制代码
class Message:
    sender: str       # 哪个 Agent 发的
    receiver: str     # 发给谁("all" 表示广播)
    content: dict     # 核心内容,JSON 格式
    metadata: dict    # 元数据:时间戳、版本等

这个结构看起来简单,但能解决 90% 的通信问题。

上下文过滤

另一个问题是信息过载。Agent A 发给 B 的消息包含大量上下文,Agent B 根本看不完。

我的做法是:每个 Agent 只接收和自己职责相关的信息。比如用户发了 5000 字的背景说明,产品 Agent 关注需求部分,技术 Agent 只看约束条件,其他信息直接过滤掉。

推荐的工具和框架

试了一圈,这三个最值得用:

1. LangGraph(最灵活)

LangChain 出的多 Agent 框架。最大的优势是可以画 DAG(有向无环图),定义 Agent 之间的依赖关系。

python 复制代码
# 核心概念:StateGraph
graph = StateGraph(AgentState)
graph.add_node("planner", planner_node)
graph.add_node("executor", executor_node)
graph.add_edge("planner", "executor")

适合复杂流程控制。学习曲线略陡,但值得。

2. CrewAI(最简单)

如果你不想写太多代码,CrewAI 是最好的选择。用 YAML 配置 Agent 角色和任务就行。

yaml 复制代码
agents:
  researcher:
    role: 研究员
    goal: 收集相关资料
    backstory: 专业的信息检索者

tasks:
  research_task:
    agent: researcher
    description: 收集最新的行业动态

上手最快,但灵活性差一点。复杂场景下容易失控。

3. AutoGen(微软出品,中规中矩)

微软的 Multi-Agent 框架,支持多轮对话。最大的特点是 Agent 之间可以"闲聊式"交流。

比较适合研究场景,生产环境用得不多。

生产级别需要注意的事

做 Demo 很容易,上线就是另一回事了。

超时和重试

Agent 相互等待、死锁、消息丢失------这些都要处理。我一般给每个 Agent 设 30 秒超时,超时了就重试一次,再超时就报错。

状态跟踪

多 Agent 的调用链很长,出了问题很难排查。建议每一步都写日志:

python 复制代码
# 最简单的做法:每一步都记录
log.append({
    "step": 3,
    "from": "orchestrator",
    "to": "coding_agent",
    "input": "请输入...",
    "output": "输出...",
    "timestamp": "2025-02-01T10:00:00"
})

有了日志,出问题至少能知道哪一步挂了。

幂等性

Agent 重试的时候,会不会重复执行同一件事?比如支付 Agent 重试导致重复扣款------这就严重了。每个 Agent 操作要保证幂等性。

写在最后

Multi-Agent 确实是处理复杂任务的好方案,但别为了用而用。如果单 Agent 能搞定,就别折腾多 Agent。

判断标准很简单:任务是否需要多个独立维度来处理?如果是,那 Multi-Agent 就很合适。如果只是一个简单的 RAG 问答,单 Agent 就够了。

下一步我打算试试 AutoGen 的异步模式,看看能不能让 Agent 在后台并行工作。搞定了再来分享。

相关推荐
创世宇图1 天前
【AI入门知识点】LLM 原理是什么?为什么 ChatGPT 看起来像“会思考”?
人工智能·ai·llm·token
创世宇图1 天前
【AI入门知识点】Function Calling 是什么?为什么 AI 开始会“调用工具”了?
人工智能·ai·llm·functioncalling
DogDaoDao1 天前
【AI Agent 深度解析】OpenHuman 开源项目全面分析 — 打造你的个人 AI 超级智能助手
人工智能·深度学习·开源·大模型·ai agent·智能体·openhuman
BeforeEasy1 天前
关于大模型工具调用技术的总结
llm·agent·工具调用·function_call·tool_use
龙骑士baby1 天前
重建 AI 认知第 1 篇:基础认知——一张地图看懂 AI Landscape
深度学习·ai·大模型·llm·ai生态
牧子川1 天前
016-Structured-Output-Practical
大模型·格式化输出
龙侠九重天1 天前
Embedding 模型深度使用——语义搜索与聚类
人工智能·深度学习·数据挖掘·大模型·llm·embedding·聚类
AndrewHZ1 天前
【大模型通关指南】3. 全球主流大模型全栈对比(含Google I/O最新Gemini,2026.05.20)
人工智能·深度学习·大模型·openai·claude·gemini·deepseek
魔乐社区1 天前
基于昇腾 MindSpeed LLM 玩转 DeepSeek-V4-Flash
人工智能·开源·大模型
Terrence Shen2 天前
Agent面试八股文(系列之三)
人工智能·大模型·agent·rag·智能体·大模型技术