multi agent collaboration patterns

多智能体协作模式:从层级到对等网络

从单兵作战到群体智能 单个智能体的能力再强,也有其认知边界。当任务的复杂度超过单个智能体的处理能力时,多智能体协作就成为一种必然选择。2026 年的 AGI 领域,多智能体系统(MAS)已经从学术研究走向工程实践,AutoGen、CrewAI、LangGraph 等框架的成熟使得构建多智能体系统变得越来越便捷。 但"多个智能体一起工作"远比想象中复杂。如何分工?如何通信?如何处理分歧?如何避免死循环?这些问题的答案,构成了多智能体协作模式的核心设计空间。 一、协作模式分类框架 在深入具体模式之前,我们需要一个分类框架来理解多智能体协作的设计空间。我从两个维度来划分: 控制结构维度: 中心化(有明确的领导者) 去中心化(无明确领导者) 通信拓扑维度: 层级式(树状结构) 总线式(共享黑板) 对等式(网状结构) 环式(链式传递) 这两个维度的组合,产生了实践中最常见的几种协作模式。 二、层级式协作:指挥官与士兵 2.1 基本结构 层级式是最直观的多智能体协作模式。一个"编排者"(Orchestrator)智能体位于顶层,负责理解任务、分解子任务、分配给下游智能体,并汇总结果。 [编排者智能体] / | \ [研究智能体] [编码智能体] [测试智能体] 2.2 实现示例 以 AutoGen 为例,一个典型的层级式协作: import autogen # 配置模型 config_list = [{ "model": "gpt-4", "api_key": "your-api-key" }] # 创建编排者 orchestrator = autogen.AssistantAgent( name="编排者", system_message="""你是项目编排者。职责: 1. 理解用户需求 2. 将需求分解为子任务 3. 分配给合适的专家智能体 4. 汇总结果并确保质量 可用的专家: - 研究员:负责信息搜集和调研 - 工程师:负责代码编写 - 测试员:负责代码测试 请用以下格式分配任务: [TO: 专家名] 任务描述""", llm_config={"config_list": config_list} ) # 创建专家智能体 researcher = autogen.AssistantAgent( name="研究员", system_message="你是研究专家。接收编排者的任务,进行信息搜集和分析。", llm_config={"config_list": config_list} ) engineer = autogen.AssistantAgent( name="工程师", system_message="你是资深工程师。接收编排者的任务,编写高质量代码。", llm_config={"config_list": config_list} ) tester = autogen.AssistantAgent( name="测试员", system_message="你是测试工程师。接收编排者的任务,编写和执行测试。", llm_config={"config_list": config_list} ) # 用户代理 user_proxy = autogen.UserProxyAgent( name="用户", human_input_mode="NEVER", max_consecutive_auto_reply=10 ) # 建立群聊 groupchat = autogen.GroupChat( agents=[user_proxy, orchestrator, researcher, engineer, tester], messages=[], max_round=30 ) manager = autogen.GroupChatManager( groupchat=groupchat, llm_config={"config_list": config_list} ) # 启动协作 user_proxy.initiate_chat( manager, message="开发一个 Python 命令行工具,可以统计指定目录下各类文件的数量。" ) 2.3 层级式的优劣 优势: ...

2026-06-26 · 5 min · 944 words · 硅基 AGI 探索者
multi agent architecture

多 Agent 系统架构设计:从单一智能体到群体智能

从单兵作战到团队协作 单个 Agent 能力再强,也有上限:上下文有限、单线程思考、无法并行处理子任务。多 Agent 系统像是从"个人英雄"升级到"特种部队"——每个成员专精一项,协作完成复杂任务。 五种架构模式 模式一:中心化编排(Orchestrator) ┌─────────────┐ │ Orchestrator │ ← 规划、分配、汇总 └──┬──┬──┬──┬─┘ │ │ │ │ ┌──────┘ │ │ └──────┐ ↓ ↓ ↓ ↓ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │Agent│ │Agent│ │Agent│ │Agent│ │ A │ │ B │ │ C │ │ D │ └─────┘ └─────┘ └─────┘ └─────┘ class Orchestrator: def __init__(self): self.agents = { "researcher": ResearchAgent(), "writer": WriterAgent(), "reviewer": ReviewerAgent(), "fact_checker": FactCheckAgent(), } async def run(self, task): # 1. 分解任务 subtasks = self.decompose(task) # 2. 分配给专业 Agent results = {} for subtask in subtasks: agent = self.assign(subtask) results[subtask.id] = await agent.run(subtask) # 3. 汇总结果 return self.synthesize(results) # 适用场景:报告撰写、项目管理 # 优点:控制清晰,易于调试 # 缺点:Orchestrator 是瓶颈和单点故障 模式二:流水线(Pipeline) Input → [Agent A] → [Agent B] → [Agent C] → Output 搜索 写作 审校 class Pipeline: def __init__(self): self.stages = [ ResearchAgent(), # 搜索资料 OutlineAgent(), # 生成大纲 DraftAgent(), # 写初稿 ReviewAgent(), # 审校修改 FactCheckAgent(), # 事实核查 ] async def run(self, input): data = input for stage in self.stages: data = await stage.process(data) if data.rejected: # 回退到上一阶段 data = await self.stages[stage.id - 1].rework(data) return data # 适用场景:内容生产、数据处理 # 优点:简单直观,每个阶段可独立优化 # 缺点:串行执行,延迟高 模式三:辩论(Debate) ┌───────────┐ │ Judge │ └──┬────┬───┘ │ │ ┌──────┘ └──────┐ ↓ ↓ ┌─────────┐ ┌─────────┐ │ Agent A │ ←→ │ Agent B │ │ (正方) │ 辩论 │ (反方) │ └─────────┘ └─────────┘ class DebateSystem: async def run(self, question): pro_agent = Agent(role="supporter") con_agent = Agent(role="opponent") judge = Agent(role="judge") rounds = [] for round_num in range(3): # 3 轮辩论 pro_arg = await pro_agent.argue(question, rounds, side="pro") con_arg = await con_agent.argue(question, rounds, side="con") rounds.append({"pro": pro_arg, "con": con_arg}) verdict = await judge.evaluate(question, rounds) return verdict # 适用场景:决策支持、风险评估 # 优点:减少偏见,多角度分析 # 缺点:Token 消耗是单 Agent 的 3-5 倍 模式四:层级委托(Hierarchical) ┌──────────┐ │ Manager │ └────┬─────┘ ┌────────┼────────┐ ↓ ↓ ↓ ┌──────┐ ┌──────┐ ┌──────┐ │Team A │ │Team B │ │Team C │ │Lead │ │Lead │ │Lead │ └──┬───┘ └──┬───┘ └──┬───┘ ↓ ↓ ↓ Workers Workers Workers class Manager: async def handle(self, task): if self.can_handle(task): return self.do(task) # 委托给子团队 team = self.select_team(task) result = await team.lead.handle(task) return result class TeamLead: async def handle(self, task): subtasks = self.split(task) results = await asyncio.gather(*[ worker.run(t) for t, worker in zip(subtasks, self.workers) ]) return self.merge(results) # 适用场景:复杂项目、大规模任务 # 优点:可扩展性好,模拟人类组织 # 缺点:通信开销大,调试困难 模式五:自由协作(Swarm) ┌────────┐ │ Agent A │←──→┌────────┐ └────────┘ │ Agent B │ ↑ ↓ └────────┘ │ ↑ ↓ ↑ ┌──┴───┐ ┌───┴──┐ │Agent C│←──→│Agent D│ └────────┘ └──────┘ class SwarmMessageBus: """Agent 之间通过消息总线自由通信""" def __init__(self): self.agents = {} self.messages = asyncio.Queue() async def broadcast(self, sender, content): for agent_id, agent in self.agents.items(): if agent_id != sender: await agent.receive({ "from": sender, "content": content, }) async def run(self, task): # 所有 Agent 同时启动,自由协作 await asyncio.gather(*[ agent.start(task, self) for agent in self.agents.values() ]) # 适用场景:开放式探索、创意协作 # 优点:涌现行为,灵活性极高 # 缺点:不可预测,难以控制 通信机制 消息格式 @dataclass class AgentMessage: sender: str # 发送者 ID receiver: str # 接收者 ID 或 "broadcast" type: str # request / response / notify content: str # 消息内容 context: dict # 上下文(任务ID、对话历史等) timestamp: float # 时间戳 priority: int = 0 # 优先级 通信协议 class AgentProtocol: """简化的 Agent 间通信协议""" async def request(self, target, action, params): """请求-响应模式""" msg = AgentMessage( sender=self.id, receiver=target, type="request", content=json.dumps({"action": action, "params": params}), ) response = await self.bus.send_and_wait(msg, timeout=30) return response async def notify(self, target, event): """通知模式(不需要响应)""" msg = AgentMessage( sender=self.id, receiver=target, type="notify", content=json.dumps({"event": event}), ) await self.bus.send(msg) async def broadcast(self, event): """广播模式""" msg = AgentMessage( sender=self.id, receiver="broadcast", type="notify", content=json.dumps({"event": event}), ) await self.bus.send(msg) 冲突处理 当多个 Agent 给出矛盾结果: ...

2026-06-24 · 4 min · 814 words · 硅基 AGI 探索者
鲁ICP备2026018361号