第二节 多智能体系统:如何构建多 Agent 系统
视频:一堂课搞懂复杂多Agent系统选型
一、什么是多智能体系统
多智能体系统(Multi-Agent System)是由多个相互协作的智能体组成的分布式系统。每个Agent都是独立的决策单元,拥有自己的目标、知识和能力,通过通信和协调机制共同完成复杂任务。
为什么需要多Agent

46%
#TzTxlZQqDcUJ text { white-space: pre; }#TzTxlZQqDcUJ .fb0 { stroke: var(--N900-FG, 0.15); }#TzTxlZQqDcUJ .fb0 {stroke: rgba(31,35,41, 0.15)}#TzTxlZQqDcUJ .fx0 { stroke-miterlimit: 10; }#TzTxlZQqDcUJ .fx0 {stroke-miterlimit: 10}#TzTxlZQqDcUJ .fa1 { fill: rgb(187, 191, 196); }#TzTxlZQqDcUJ .fa1 {fill: rgb(187, 191, 196)}#TzTxlZQqDcUJ .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#TzTxlZQqDcUJ .fx1 {font-style: normal}#TzTxlZQqDcUJ .fx2 { text-anchor: middle; }#TzTxlZQqDcUJ .fx2 {text-anchor: middle}#TzTxlZQqDcUJ .fx3 { dominant-baseline: central; }#TzTxlZQqDcUJ .fx3 {dominant-baseline: central}#TzTxlZQqDcUJ .fx4 { stroke: none; }#TzTxlZQqDcUJ .fx4 {stroke: none}#TzTxlZQqDcUJ .fc0 { fill: var(--text-caption); }#TzTxlZQqDcUJ .fc0 {fill: #646a73}#TzTxlZQqDcUJ .fa2 { fill: var(--text-link-disabled); }#TzTxlZQqDcUJ .fa2 {fill: rgb(187, 191, 196)}#TzTxlZQqDcUJ .fa3 { fill: rgb(246, 248, 250); }#TzTxlZQqDcUJ .fa3 {fill: rgb(246, 248, 250)}#TzTxlZQqDcUJ .fx5 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#TzTxlZQqDcUJ .fx5 {font-style: normal}#TzTxlZQqDcUJ .fx6 { text-anchor: start; }#TzTxlZQqDcUJ .fx6 {text-anchor: start}#TzTxlZQqDcUJ .fx7 { dominant-baseline: alphabetic; }#TzTxlZQqDcUJ .fx7 {dominant-baseline: alphabetic}#TzTxlZQqDcUJ .fc1 { fill: rgb(51, 51, 51); }#TzTxlZQqDcUJ .fc1 {fill: rgb(51, 51, 51)}#TzTxlZQqDcUJ .fb1 { fill: var(--N900-FG, 0.15); }#TzTxlZQqDcUJ .fb1 {fill: rgba(31,35,41, 0.15)}#TzTxlZQqDcUJ .fb2 { fill: rgb(225, 228, 232); }#TzTxlZQqDcUJ .fb2 {fill: rgb(225, 228, 232)}#TzTxlZQqDcUJ .fa4 { fill: var(--bg-body); }#TzTxlZQqDcUJ .fa4 {fill: #fff}ABC123456场景复杂任务大规模处理多领域问题容错需求动态环境单Agent局限能力边界有限串行执行效率低难以覆盖所有专业单点故障风险适应性有限多Agent优势专业分工,各司其职并行处理,提升吞吐专家Agent协作分布式冗余灵活重组,动态调整
54%
二、多Agent架构模式
根据Agent之间的组织关系,多智能体系统主要分为三种架构模式:
层级式架构(Hierarchical)
层级式架构采用管理者-执行者模式,由一个或多个管理Agent负责任务分解和协调,执行Agent负责具体任务。

🤜
适用场景:
•
任务有明确的分解结构
•
需要集中控制和监督
•
执行流程相对固定
优点:控制清晰、易于管理、责任明确
缺点:管理者成为瓶颈、灵活性较低
对等式架构(Peer-to-Peer)
对等式架构中所有Agent地位平等,通过协商和投票机制达成共识,共同完成任务。

🤜
适用场景:
•
需要多方协商决策
•
Agent能力相近或互补
•
任务边界不明确
优点:灵活性高、无单点故障、适应性强
缺点:协调开销大、可能产生冲突
混合式架构(Hybrid)
混合式架构结合层级式和对等式的优点,在不同层级或子系统中采用不同的组织方式。

🤜
适用场景:
•
大型复杂系统
•
需要兼顾效率和灵活性
•
多团队协作项目
三、Agent间通信与协调
多Agent系统的核心挑战在于如何实现高效的通信和协调。
通信模式
表格加载中...
协调机制
python
代码块
Python
from enum import Enum
from dataclasses import dataclass
from typing import List, Dict, Anyclass CoordinationType(Enum):
CONTRACT_NET = "contract_net"
冲突解决策略
多Agent系统中常见的冲突类型及解决方案:
资源冲突:多个Agent竞争同一资源
解决:优先级队列、资源预留、时间片轮转
目标冲突:Agent目标相互矛盾
解决:协商机制、仲裁Agent、目标权重调整
信息冲突:Agent持有不一致的信息
主流多Agent框架对比
💡 想要快速找到适合您需求的Agent工具?访问 AI Agent工具导航 获取完整的工具列表和对比。
四、实战:构建多Agent协作系统
4.1
使用CrewAI构建研究团队
代码块
Python
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0.7)
researcher = Agent(
role='高级研究员',
goal='深入研究指定主题,收集全面准确的信息',
backstory='''你是一位经验丰富的研究专家,擅长从多个来源
收集和验证信息。你注重数据的准确性和时效性。''',
verbose=True,
allow_delegation=False,
4.2
使用AutoGen构建对话式多Agent系统
代码块
Python
import autogen
config_list = [{"model": "gpt-4-turbo", "api_key": "your-api-key"}]
user_proxy = autogen.UserProxyAgent(
4.3
使用LangGraph构建复杂工作流
代码块
Python
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Listimport operator
class MultiAgentState(TypedDict):
messages: Annotated[List[str], operator.add]
current_agent: str
task_status: dict
final_result: strdef research_node(state: MultiAgentState) -> dict:
return {
"messages": ["研究Agent: 完成信息收集"],
"current_agent": "analyst",
"task_status": {**state["task_status"], "research": "done"}
}
五、多Agent系统最佳实践
角色设计原则
•
单一职责:每个Agent专注于特定领域
•
能力互补:Agent之间形成能力互补
•
边界清晰:明确定义每个Agent的职责范围
•
可替换性:设计标准接口,便于Agent替换升级
通信协议设计
python
代码块
Python
from dataclasses import dataclass
from typing import Any, Optionalfrom datetime import datetime
from enum import Enum
class MessageType(Enum):
REQUEST = "request"
RESPONSE = "response"
BROADCAST = "broadcast"
ACK = "acknowledgment"@dataclassclass AgentMessage:
sender: str
receiver: str
监控与调试
•
日志追踪:记录每个Agent的决策过程
•
状态可视化:实时展示系统状态
•
性能指标:监控响应时间、成功率等
•
异常告警:及时发现和处理异常
六、常见问题
多Agent系统和单Agent有什么区别?
单Agent系统由一个智能体独立完成所有任务,适合简单场景。多Agent系统由多个专业化Agent协作,能够处理更复杂的任务,具有更好的可扩展性和容错性。多Agent系统通过分工协作实现"1+1>2"的效果。
如何选择合适的多Agent框架?
选择框架需考虑以下因素:
•
任务复杂度:简单任务选CrewAI,复杂流程选LangGraph
•
交互模式:对话式选AutoGen,工作流式选CrewAI
•
团队技术栈:考虑学习成本和维护成本
•
性能要求:高并发场景需要考虑框架的扩展能力
多Agent系统的主要挑战是什么?
主要挑战包括:通信开销(Agent间消息传递成本)、协调复杂性(任务分配和冲突解决)、状态一致性(分布式环境下的数据同步)、调试困难(多Agent交互难以追踪)。解决这些挑战需要良好的架构设计和工程实践。
如何优化多Agent系统的性能?
性能优化策略包括:
减少不必要的Agent间通信
实现有效的任务缓存机制
使用异步通信减少等待时间
合理设计Agent粒度,避免过度拆分
选择合适的LLM模型,平衡性能和成本
七、总结
多智能体系统代表了AI应用从单体智能向群体智能演进的重要方向。通过合理的架构设计、高效的通信协调机制,多Agent系统能够解决单个Agent难以处理的复杂问题。