【学习教程】:Handy Multi Agent 教程
一、Multiple Agent 基本概念
1. 定义
多智能体是由多个相互作用的智能体组成的系统,每个智能体具备独立目标与策略,可通过通信实现协作或竞争,以完成复杂行为与决策。
2. 典型应用
- 交通流量管理、分布式机器人协同
- 经济市场模拟、多玩家游戏
- 复杂项目开发(如软件开发、内容生产)
3. 核心特点
特点 | 说明 |
---|---|
协作性 | 智能体间可协同配合,共同解决单一智能体无法完成的复杂问题 |
竞争性 | 部分场景下(如拍卖、游戏)智能体存在目标冲突,需通过竞争实现自身目标 |
自主性 | 每个智能体拥有独立决策流程,无需完全依赖外部指令 |
复杂性 | 需设计智能体间的交互与协调机制,系统分析难度高于单一智能体 |
鲁棒性 | 系统稳定性不依赖单一智能体,单个节点故障不影响整体功能,容错性强 |
二、CAMEL 框架简介
1. 定义与定位
CAMEL(Communicative Agents for "Mind" Exploration of Large Language Models)是开源多智能体框架,专注于构建基于大语言模型(LLM)的智能体交互系统,核心通过 "角色扮演" 和 "结构化对话" 实现智能体协作。
2. 核心组件
- ChatAgent:框架基础单元,负责对话逻辑处理与任务执行。
- RolePlaying:合作式多智能体系统,通过角色设定与规则约束实现高效协作。
- Workforce:多智能体协同工作系统,通过层级架构与任务通道实现团队化任务处理。
三、ChatAgent:CAMEL 基础构建块
1. 设计目标
解决 "如何构建自主交互式智能体,在最少人工监督下引导对话完成任务" 的核心问题。
2. 六大关键特性
特性 | 说明 |
---|---|
角色(Role) | 结合目标与内容规范设定初始状态,引导智能体在交互中保持行为一致性 |
LLMs | 依赖大语言模型增强认知能力,支持自然语言理解、响应生成与复杂对话 |
记忆(Memory) | 含 "上下文记忆"(短期对话信息)与 "外部记忆"(长期知识存储),支撑推理与学习 |
工具(Tools) | 提供与外部世界交互的功能(如搜索、计算),赋予智能体 "具身化" 能力 |
通信(Communication) | 支持智能体间灵活可扩展的信息交互,是协作的基础 |
推理(Reasoning) | 具备规划与奖励学习能力,可指导性优化任务完成路径 |
四、RolePlaying 机制:CAMEL 合作式协作核心
1. 核心价值
通过预定义提示词与规则,解决智能体交互中的角色翻转、指令重复、模糊回复、无限循环等问题,实现稳定协作。
2. 基本概念
(1)角色定义
- Assistant 角色:执行具体任务、提供解决方案(如程序员、分析师)。
- User 角色:提供指令、明确任务需求(如产品经理、交易员)。
- 特定领域角色:基于场景的专业角色(如股票交易员、Python 程序员)。
(2)交互规则(示例)
===== RULES OF ASSISTANT =====
1. 始终牢记你是{ASSISTANT_ROLE},我是{USER_ROLE},不翻转角色;
2. 无法执行的指令需诚实拒绝;
3. 回复必须以"Solution: <你的方案>"开头,以"Next request."结尾。
(3)关键机制
- 角色固定:防止交互中角色错位,维持对话稳定性。
- 格式规范:统一回复结构,降低理解成本。
- 任务分解:自动将复杂任务拆分为可执行子任务。
- 循环对话:通过 "User 指令→Assistant 方案" 的轮询推进任务。
3. 工作流程
- 初始化阶段:设定角色身份→加载系统提示词→明确任务目标。
- 执行阶段:User 提供具体指令→Assistant 生成解决方案→循环直至任务完成。
4. 经典案例:股票交易机器人
(1)角色设定
- Assistant:Python 程序员(负责实现交易代码与逻辑)。
- User:股票交易员(提供交易策略与业务需求)。
(2)任务流程
- 任务提出:人类用户提出 "开发股票交易机器人" 的抽象需求。
- 任务具体化:专用 Agent 将需求细化为 "基于机器学习的机器人,需自动分析趋势、执行买卖、优化组合"。
- 任务拆分:交易员 Agent 将总任务拆分为 "策略定义→数据接口开发→模型训练→代码实现" 等子任务。
- 协作执行:程序员与交易员通过对话迭代,逐步完成各子任务,最终生成完整机器人。
五、Workforce:CAMEL 多智能体团队协作系统
1. 定位
以 "团队化协作" 模式,让多个智能体高效完成复杂任务,类似 "智能工作团队"。
2. 核心设计
(1)层级架构
- Workforce(总控):包含多个 "工作节点(Worker Nodes)"。
- 工作节点:每个节点含 1 个以上智能体,负责特定类型任务。
- 协调智能体(Coordinator):管理工作节点,根据节点能力分配任务。
- 任务规划智能体(Task Planner):负责任务的分解与结果整合。
(2)通信机制:任务通道(Task Channel)
- 所有节点共享同一通道,任务与结果均在通道内流转。
- 任务发布:协调智能体将任务发布到通道,节点监听并接收分配的任务。
- 结果共享:节点完成任务后,将结果回传通道,作为其他任务的 "依赖项" 供共享。
(3)故障处理
故障场景 | 处理逻辑 |
---|---|
任务失败 | 1. 若任务分解次数未超阈值:协调智能体将任务拆分为更小单元,重新分配; 2. 若超阈值:创建新智能体执行任务。 |
任务多次失败 | 失败超 3 次(默认)时,停止任务,避免无限循环创建智能体。 |
3. 实例:创建产品登录页面
(1)角色分工
- Root Node(Manager):接收用户需求,总控任务流程。
- 协调 / 任务管理智能体:分解任务、管理依赖、监控进度。
- Leaf Nodes(Workers):内容撰写者(写页面文本)、代码撰写者(写 HTML 代码)。
(2)流程
- 接收需求:用户提出 "创建登录页面",协调智能体接收需求。
- 任务分解:拆分为 "任务 A.1(撰写文本)" 和 "任务 A.2(撰写代码,依赖 A.1 结果)"。
- 任务分配:通道将 A.1 分配给内容撰写者,A.2 分配给代码撰写者。
- 执行任务:内容撰写者完成 A.1 并回传结果→代码撰写者基于 A.1 结果完成 A.2。
- 结果整合:协调智能体汇总结果,返回给用户。
(3)核心特性
- 任务分解:复杂任务→简单子任务,降低执行难度。
- 依赖管理:自动处理任务间依赖(如代码需先有文本)。
- 角色分工:按能力分配任务,提升执行效率。