多 Agent 系统的核心问题不是“创建多个 LLM”,而是:
如何让多个具有不同职责的 Agent,在共享目标下进行任务分工、通信、协作,并根据环境变化动态调整角色。
可以把它理解成一个“AI团队”。
例如一个机器人云平台:
规划 Agent:负责任务拆解
导航 Agent:负责路径规划视觉 Agent:负责识别
控制 Agent:负责运动控制
诊断 Agent:负责故障分析
它们不是同时乱跑,而是需要一个协作机制。
一、多 Agent 基本架构
典型架构:
用户任务
|
↓
Coordinator Agent
(调度/管理Agent)
|
--------------------------------
↓ ↓ ↓
Planning Agent Vision Agent Control Agent
↓ ↓ ↓
Tools Tools Tools
|
↓
Environment
其中:
Coordinator Agent(协调者)
类似项目经理:
负责:
理解目标
分配任务
调度 Agent
处理冲突
动态切换
二、Agent之间如何通信?
主要有三种方式。
方式1:中心化通信(最常用)
所有 Agent 通过一个 Manager 通信。
例如:
User
|
↓
Manager
/ | \
Plan Vision Control
消息:
{
"from":"planner",
"to":"navigation",
"task":{
"goal":"move to room 101"
}
}
优点:
简单
容易
控制易调试
缺点:
Manager压力大
单点故障
适合:
企业Agent、机器人系统。
方式2:去中心化通信
Agent之间直接交流:
Planner
|
|
Vision ---- Control
|
Navigation
例如:
Vision:
发现障碍物
↓
直接通知Navigation
优点:
灵活
扩展性好
缺点:
协议复杂
容易混乱
适合:
大型Multi-Agent。
方式3:黑板模式(Blackboard)
多个 Agent 共享一个状态空间。
类似:
Blackboard
|
--------------------------------
| | |
Planner Vision Control
例如:
共享状态:
{
"robot_position":[3,5],
"battery":20,
"obstacle":"chair"
}
Agent读取和修改。
类似机器人系统里的:
ROS Topic
Shared Memory
Redis
三、Agent如何分工?
核心是:
Role Definition(角色定义)
每个 Agent 有:
Agent Profile
{
name:
capability:
input:
output:
tools:
constraint:
}
例如:
Navigation Agent:
能力:
路径规划
输入:
地图
目标点
输出:
path
工具:
A*
Dijkstra
ROS navigation
Vision Agent:
能力:
目标检测
输入:
camera image
输出:
object location