智能体深度解析 / 多智能体系统(Multi-Agent Systems)
CHAPTER 05 · TOPIC 06

多智能体系统(Multi-Agent Systems)

当单个 Agent 无法胜任复杂任务时,多个 Agent 协作组成多智能体系统(Multi-Agent System, MAS)成为必然选择。多智能体通过角色分工、消息传递和协同决策,实现远超单 Agent 的能力边界。本章深入讲解多智能体系统的架构模式、通信机制、协作策略和实际实现。

一句话理解

当单个 Agent 无法胜任复杂任务时,多个 Agent 协作组成多智能体系统(Multi-Agent System, MAS)成为必然选择。多智能体通过角色分工、消息传递和协同决策,实现远超单 Agent 的能力边界。本章深入讲解多智能体系统的架构模式、通信机制、协作策略和实际实现。

阅读前置

理解提示工程与工具调用

本文关注

为什么需要多智能体、多智能体架构模式、通信机制

所在知识层

行动系统 · 智能体深度解析

文章导航
主教学视觉多智能体系统(Multi-Agent Systems) · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

单个 Agent 无法胜任复杂任务时,多个 Agent 协作组成多智能体系统(Multi-Agent System, MAS)成为必然选择。多智能体通过角色分工、消息传递和协同决策,实现远超单 Agent 的能力边界。本章深入讲解多智能体系统的架构模式、通信机制、协作策略和实际实现。


1. 为什么需要多智能体

1.1 单 Agent 的瓶颈

TEXT
问题 1: 上下文过载
  一个 Agent 需要同时处理代码编写、测试、文档、部署——
  上下文窗口装不下所有信息,导致遗漏和错误。

问题 2: 专业能力不足
  一个 Agent 同时扮演产品经理、架构师、开发者、测试员——
  每个角色都做不精,输出质量参差不齐。

问题 3: 串行效率低
  一个 Agent 做完 A 才能做 B,做完 B 才能做 C——
  无法并行处理独立子任务,效率低下。

问题 4: 缺乏对抗与制衡
  一个 Agent 自我评审容易出现"确认偏差"——
  没有独立视角的交叉验证,错误难以发现。

1.2 多智能体的优势

优势说明
专业分工每个 Agent 专注一个领域,输出更专业
并行处理独立子任务可并行执行,提高效率
互相验证Agent 之间可以互相审查,减少错误
上下文隔离每个 Agent 只关注自己的上下文,避免过载
可扩展性新能力 = 新增 Agent,无需重构整体

2. 多智能体架构模式

2.1 层级式架构(Hierarchical)

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

管理者 Agent · (Orches…负责分配任务、汇总结果 · Agent…Agent C · (审核)
查看原文结构
┌──────────────────┐
                │   管理者 Agent    │  负责分配任务、汇总结果
                │  (Orchestrator)  │
                └───┬───┬───┬──────┘
                    ↓   ↓   ↓
         ┌─────────┐ ┌─────────┐ ┌─────────┐
         │ Agent A  │ │ Agent B  │ │ Agent C  │  各自执行子任务
         │ (研究)   │ │ (写作)   │ │ (审核)   │
         └─────────┘ └─────────┘ └─────────┘

2.2 平等协作架构(Peer-to-Peer)

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Agent A · (作者) · Ag…Agent B · (编辑) · Ag…
查看原文结构
┌─────────┐      ┌─────────┐
         │ Agent A  │ ←──→ │ Agent B  │
         │ (作者)   │      │ (编辑)   │
         └────┬─────┘      └────┬─────┘
              │                 │
              ↓                 ↓
         ┌─────────┐      ┌─────────┐
         │ Agent C  │ ←──→ │ Agent D  │
         │ (研究员) │      │ (审校员) │
         └─────────┘      └─────────┘

2.3 流水线架构(Pipeline)

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

分析 · Agent设计 · Agent实现 · Agent测试 · Agent
查看原文结构
┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐
需求 →   │ 分析     │ →  │ 设计    │ →  │ 实现    │ →  │ 测试    │ → 交付
         │ Agent   │    │ Agent   │    │ Agent   │    │ Agent   │
         └─────────┘    └─────────┘    └─────────┘    └─────────┘

2.4 竞争架构(Competitive)

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

用户问题Agent A Agent B Age…各自独立作答答案 A 答案 B 答案 C评委 Agent评选最佳答案
查看原文结构
用户问题
             ↓
    ┌────────┼────────┐
    ↓        ↓        ↓
 Agent A   Agent B   Agent C   ← 各自独立作答
    ↓        ↓        ↓
 答案 A    答案 B    答案 C
    └────────┼────────┘
             ↓
       ┌───────────┐
       │ 评委 Agent │  ← 评选最佳答案
       └───────────┘
             ↓
        最终答案

3. 通信机制

Agent 之间的通信机制正走向标准化,跨系统的 A2A 协议与整体生态可参见 Agent 生态系统全景

3.1 消息传递模式

PYTHON
# 模式 1: 直接通信(Agent-to-Agent)
agent_a.send_message(agent_b, "请帮我检查这段代码的逻辑")

# 模式 2: 广播通信(Agent-to-All)
orchestrator.broadcast("任务已完成 80%,请各 Agent 汇报进度")

# 模式 3: 共享黑板(Blackboard)
blackboard.write("research_results", agent_a.findings)
data = blackboard.read("research_results")  # 其他 Agent 可读

# 模式 4: 消息队列(Message Queue)
queue.publish("task.completed", {"agent": "A", "result": result})
queue.subscribe("task.completed", handler)  # 订阅特定事件

3.2 通信协议设计

PYTHON
@dataclass
class AgentMessage:
    """Agent 之间的通信消息"""
    sender: str           # 发送方 Agent ID
    receiver: str         # 接收方 Agent ID("all" 表示广播)
    msg_type: str         # 消息类型: task / result / query / feedback
    content: Any          # 消息内容
    priority: int = 0     # 优先级
    timestamp: float = 0  # 时间戳
    reply_to: str = ""    # 回复哪条消息
    metadata: Dict = field(default_factory=dict)

# 消息类型
MSG_TYPES = {
    "task_assign":   "管理者分配任务",
    "task_result":   "工作者返回结果",
    "query":         "Agent 之间的询问",
    "response":      "对询问的回答",
    "feedback":      "评审反馈",
    "status_update": "状态更新",
    "terminate":     "终止信号"
}

3.3 共享状态管理

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def get(self, key: …Any:with self.lock:return self.state.g…
查看原文结构
def get(self, key: str) -> Any:
        with self._lock:
            return self._state.get(key)

4. 协作策略

4.1 辩论式协作(Debate)

TEXT
任务: "评估某公司的技术架构方案"

Round 1:
  Agent A (架构师): "应该用微服务架构,便于独立部署和扩展"
  Agent B (运维专家): "微服务会增加运维复杂度,建议单体 + 模块化"
  Agent C (CTO 视角): "取决于团队规模,小团队用单体,大团队用微服务"

Round 2:
  Agent A: "同意 C 的观点,补充:可以先单体后拆分"
  Agent B: "同意渐进式演进,但要提前设计好模块边界"
  Agent C: "最终建议:模块化单体起步,核心模块预留拆分接口"

Round 3:
  共识达成:采用模块化单体 + 渐进式拆分策略

4.2 分工协作(Division of Labor)

PYTHON
def division_of_labor(task: str):
    # 1. 任务分解
    subtasks = planner.decompose(task)
    
    # 2. 角色分配
    assignments = {}
    for subtask in subtasks:
        best_agent = select_agent(subtask)  # 根据能力匹配
        assignments[subtask.id] = best_agent
    
    # 3. 并行执行
    results = {}
    with ThreadPoolExecutor() as executor:
        futures = {
            executor.run(agent.execute, subtask): subtask
            for subtask, agent in assignments.items()
        }
        for future in as_completed(futures):
            subtask = futures[future]
            results[subtask.id] = future.result()
    
    # 4. 结果合并
    final = integrator.merge(task, results)
    return final

4.3 投票与共识

语义 SVG 重绘多智能体系统(Multi-Agent Systems)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def consensusdecisi…str:"""多 Agent 投票决策"""votes =
查看原文结构
def consensus_decision(question: str, agents: List[Agent]) -> str:
    """多 Agent 投票决策"""
    votes = {}

5. 实际实现

主流多智能体框架(如 CrewAI、AutoGen)大幅简化了系统搭建,详见 CrewAI与AutoGen

5.1 CrewAI 多智能体

PYTHON
from crewai import Agent, Task, Crew

# 定义 Agent
researcher = Agent(
    role="资深行业研究员",
    goal="深入调研指定主题,提供详尽的数据和分析",
    backstory="你是一位有 10 年经验的行业分析师,擅长数据挖掘和趋势预测",
    tools=[search_tool, web_scraper],
    llm="gpt-4"
)

writer = Agent(
    role="专业内容作者",
    goal="将研究结果整理成高质量的文章",
    backstory="你是一位资深科技作者,擅长将复杂概念用通俗语言表达",
    llm="gpt-4"
)

reviewer = Agent(
    role="内容审核专家",
    goal="审核文章的准确性、逻辑性和可读性",
    backstory="你是一位严谨的编辑,对事实核查和逻辑一致性要求极高",
    llm="gpt-4"
)

# 定义任务
research_task = Task(
    description="调研 2024 年 AI Agent 技术的发展现状和趋势",
    expected_output="详细的调研报告,包含数据、案例和趋势分析",
    agent=researcher
)

writing_task = Task(
    description="基于调研报告,撰写一篇 3000 字的深度分析文章",
    expected_output="结构清晰、数据充分的分析文章",
    agent=writer
)

review_task = Task(
    description="审核文章,确保事实准确、逻辑自洽、表述清晰",
    expected_output="审核报告和修改后的最终版本",
    agent=reviewer
)

# 组建团队
crew = Crew(
    agents=[researcher, writer, reviewer],
    tasks=[research_task, writing_task, review_task],
    process="sequential",  # 顺序执行
    verbose=True
)

result = crew.kickoff()

5.2 AutoGen 多智能体对话

PYTHON
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager

# 创建 Agent
coder = AssistantAgent(
    name="Coder",
    system_message="你是一位资深 Python 开发者,负责编写代码",
    llm_config=llm_config
)

reviewer = AssistantAgent(
    name="Reviewer",
    system_message="你是一位代码审查专家,负责审查代码质量和安全性",
    llm_config=llm_config
)

user = UserProxyAgent(
    name="User",
    human_input_mode="NEVER",
    code_execution_config={"work_dir": "coding"}
)

# 创建群聊
groupchat = GroupChat(
    agents=[user, coder, reviewer],
    messages=[],
    max_round=10,
    speaker_selection_method="round_robin"  # 轮流发言
)

manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)

# 启动对话
user.initiate_chat(manager, message="帮我写一个 REST API 的用户管理系统")

5.3 自定义多智能体编排

语义 SVG 重绘多智能体系统(Multi-Agent Systems) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文def runpipeline(self, tas…系统核心str:"""流水线执行"""currentinput = task工具、结果与反馈for agentid in agentseque…agent = self.agents agent…
查看原文结构
def run_pipeline(self, task: str, agent_sequence: List[str]) -> str:
        """流水线执行"""
        current_input = task
        for agent_id in agent_sequence:
            agent = self.agents[agent_id]
            current_input = agent.process(current_input)
        return current_input
语义 SVG 重绘多智能体系统(Multi-Agent Systems) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def runparallel(sel…Dict:"""并行执行"""results =with ThreadPoolExec…futures =
查看原文结构
def run_parallel(self, task: str, agent_ids: List[str]) -> Dict:
        """并行执行"""
        results = {}
        with ThreadPoolExecutor() as executor:
            futures = {
                executor.submit(self.agents[aid].process, task): aid
                for aid in agent_ids
            }
            for future in as_completed(futures):
                agent_id = futures[future]
                results[agent_id] = future.result()
        return results

6. 多智能体的挑战

6.1 核心挑战

挑战说明应对方案
通信开销Agent 间消息传递消耗大量 token精简消息格式,只传必要信息
死循环Agent 互相调用,无法终止设置最大轮数和终止条件
信息丢失消息传递中信息被压缩或遗漏关键信息存入共享状态
角色冲突Agent 目标相互矛盾明确的优先级和仲裁机制
调试困难多 Agent 交互难以追踪完整的日志和可视化追踪
成本高昂多个 LLM 调用 = 多倍 API 费用合理分工,减少不必要的交互

6.2 最佳实践

TEXT
1. 明确角色边界
   每个 Agent 有清晰且互不重叠的职责

2. 最小化通信
   Agent 之间只传递必要的结构化信息

3. 设置超时和上限
   每个 Agent 有执行时间上限和最大重试次数

4. 统一错误处理
   任何 Agent 失败都有明确的降级和恢复策略

5. 可观测性
   记录所有 Agent 的决策和交互,便于调试和优化

6. 渐进式构建
   先用单 Agent 验证可行性,再拆分为多 Agent

7. 本章小结

架构模式特点适用场景
层级式管理者分配,工作者执行有明确分工的任务
平等协作Agent 间平等协商需要讨论和共识的场景
流水线串行处理,上游输出=下游输入流程固定的生产线
竞争式多个 Agent 竞争解题需要高质量输出的场景

相关章节


延伸阅读

  • Wu, Q. et al. (2023). "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation". arXiv:2308.08155
  • Li, G. et al. (2023). "CAMEL: Communicative Agents for 'Mind' Exploration of Large Language Model Society". NeurIPS
  • Hong, S. et al. (2023). "MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework". arXiv:2308.00352
  • Du, Y. et al. (2023). "Improving Factuality and Reasoning in Language Models through Multiagent Debate". ICML