项目: camel-ai/camel
GitHub: https://github.com/camel-ai/camel
Stars: 17,600+ | Forks: 2,000+ | 许可证: Apache 2.0
论文: “CAMEL: Communicative Agents for ‘Mind’ Exploration of Large Language Model Society” (NeurIPS 2023)
定位: 第一个 LLM 多智能体框架,专注于发现智能体的规模化定律 (Scaling Laws of Agents)
1. 核心设计理念:角色扮演范式 (Role-Playing Paradigm)
CAMEL 的核心创新是 角色扮演 (Role-Playing) 协调机制,源自 NeurIPS 2023 论文。其核心问题是:如何让两个 LLM 代理自主协作完成任务,而无需人类持续干预?
Inception Prompting 机制:
- AI User (指令发起者):扮演”用户”角色,给出高层指令和任务方向
- AI Assistant (执行者):扮演”助手”角色,执行具体任务并返回结果
- Critic (可选评审者):评估对话质量和任务完成度
关键洞察:无约束的代理对在 2-3 轮对话内就会发生角色反转——助手开始发号施令,用户开始提问,任务失败。CAMEL 通过 系统提示中嵌入 “Never flip roles!” 指令来维持角色一致性,这是一种提示级别的约束而非框架级强制。
对话流程:
User Agent → "开发一个量化交易算法"
Assistant Agent → 分析需求、提出方案
User Agent → 审查方案、提出修改
Assistant Agent → 实现代码
... 直到 CAMEL_TASK_DONE 标记或 token 预算耗尽
2. Agent 体系架构
CAMEL 的 Agent 层采用 继承式设计,所有 Agent 继承自 BaseAgent:
| Agent 类 | 职责 | 特点 |
|---|
|———-|——|——|
BaseAgent |
抽象基类 | 定义 step() 和 reset() 接口 |
|---|---|---|
ChatAgent |
核心对话代理 | 50,000+ 行代码,支持工具调用、记忆、流式输出 |
CriticAgent |
评审代理 | 评估对话质量,支持人类介入 (Human-in-the-loop) |
TaskSpecifyAgent |
任务细化 | 将模糊任务转为具体可执行任务 |
TaskPlannerAgent |
任务规划 | 分解复杂任务为子任务序列 |
TaskCreationAgent |
任务创建 | 基于上下文动态生成新任务 |
TaskPrioritizationAgent |
任务优先级 | 对任务列表排序 |
RoleAssignmentAgent |
角色分配 | 为多代理场景自动分配角色 |
SearchAgent |
搜索代理 | 封装搜索工具能力 |
KnowledgeGraphAgent |
知识图谱 | 构建和查询知识图谱 |
MCPAgent |
MCP 集成 | 连接 MCP (Model Context Protocol) 服务器 |
RepoAgent |
仓库代理 | 分析和操作代码仓库 |
ChatAgent 的关键能力:
- 多模型后端:通过
ModelManager支持 40+ LLM 提供商(GPT、Claude、Ollama、vLLM 等) - 工具调用:集成
FunctionTool,支持注册外部工具 - 记忆管理:
ChatHistoryMemory+ScoreBasedContextCreator实现智能上下文管理 - 流式输出:
StreamContentAccumulator管理流式响应累积 - 速率限制处理:自动处理 OpenAI 和 Anthropic 的
RateLimitError - 可观测性:集成 AgentOps 和 Langfuse 追踪
3. 社会协作层 (Societies Layer)
societies 模块是 CAMEL 的上层协调框架,包含两个核心组件:
RolePlaying(角色扮演)
session = RolePlaying(
assistant_role_name="Python Programmer",
user_role_name="Stock Trader",
task_prompt="Develop a trading bot for the stock market",
with_task_specify=True, # 先用 TaskSpecifyAgent 细化任务
with_task_planner=False, # 可选:启用 TaskPlannerAgent 分解任务
with_critic_in_the_loop=False, # 可选:加入 CriticAgent 评审
task_type=TaskType.AI_SOCIETY,
)
初始化流程:
TaskSpecifyAgent细化原始任务提示TaskPlannerAgent(可选)分解任务为子计划SystemMessageGenerator为每个角色生成系统消息- 创建
ChatAgent实例并注入角色系统消息 - 可选创建
CriticAgent或Human评审者
step() 方法的执行流程:
- User Agent 收到 Assistant 的上一条消息
- User Agent 生成响应
- Assistant Agent 收到 User 的响应
- Assistant Agent 生成执行结果
- 返回
(assistant_response, user_response)元组
Workforce(工作团队)
Workforce 是 2024 年后期加入的层级化扩展,将角色扮演概念泛化为完整的多代理编排系统:
- Coordinator Agent:根据能力分配任务给合适的 Worker
- Task Agent:分解复杂任务、组合结果
- SingleAgentWorker:单代理 + 工具执行
- RolePlayingWorker:原始的双代理辩论格式
- 动态 Worker 创建:当现有 Worker 无法处理失败任务时,运行时创建新的专家 Worker
Workforce 支持 pause()、resume()、save_snapshot() 等人工干预能力,并可通过 to_mcp() 暴露为 MCP 服务器。
4. 工具生态系统 (Toolkits)
CAMEL 拥有 80+ 工具包,覆盖广泛的外部能力:
| 类别 | 工具示例 | 说明 |
|---|
|——|———|——|
| 搜索 | SearchToolkit | Web 搜索 |
|---|---|---|
| 浏览器 | BrowserToolkit | 网页自动化 |
| 终端 | CodeExecutionToolkit | 代码执行 |
| GitHub | GithubToolkit | 仓库操作 |
| 数据库 | DatabaseToolkit | SQL 查询 |
| 消息 | SlackToolkit, DiscordToolkit | 团队协作 |
| 知识 | NotionToolkit | 文档管理 |
| 思维 | ThinkingToolkit | 结构化推理 |
工具通过 FunctionTool 封装为统一接口,支持:
- 自动 schema 生成(从函数签名推断)
- 工具调用记录 (
ToolCallingRecord) - 工具输出截断和日志保存
RegisteredAgentToolkit注册表机制
5. 模型抽象层 (Model Layer)
CAMEL 的模型层提供统一的 LLM 接口:
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI,
model_type=ModelType.GPT_4O,
)
核心组件:
BaseModelBackend:所有模型后端的抽象基类ModelFactory:工厂模式创建模型实例ModelManager:管理多个模型后端,支持 fallback 和负载均衡ModelProcessingError:统一的模型错误处理
支持的模型平台包括 OpenAI、Anthropic、Google、Mistral、Ollama、vLLM、Together AI 等 40+ 提供商。
6. 记忆系统 (Memory System)
CAMEL 实现了多层次的记忆管理:
from camel.memories import (
AgentMemory, # 代理级记忆
ChatHistoryMemory, # 聊天历史记忆
MemoryRecord, # 记忆记录单元
ScoreBasedContextCreator, # 基于评分的上下文创建器
)
记忆架构:
- 短期记忆:当前对话的完整历史
- 长期记忆:跨会话的持久化存储(通过
JsonStorage) - 工作记忆:
ScoreBasedContextCreator根据相关性评分选择性加载上下文 - 记忆记录:每条
MemoryRecord包含内容、时间戳、相关性分数等元数据
7. 消息与提示系统 (Messages & Prompts)
CAMEL 的消息系统支持多种格式:
BaseMessage:基础消息类,支持文本、图像、音频等多模态OpenAIMessage:兼容 OpenAI API 的消息格式FunctionCallingMessage:工具调用消息TextPrompt:提示模板,支持变量插值
SystemMessageGenerator 根据 TaskType 和角色元数据动态生成系统消息:
TaskType.AI_SOCIETY:AI 社会协作场景TaskType.CODE:代码生成场景TaskType.MISALIGNMENT:对齐研究场景TaskType.SOLUTION_EXTRACTION:解决方案提取场景
8. 大规模仿真能力 (OASIS)
CAMEL 生态中的 OASIS (Open Agent Social Interaction Simulations) 项目实现了 百万级代理社交仿真:
- 规模:支持最多 100 万 LLM 代理同时交互
- 平台模拟:模拟 X (Twitter)、Reddit 等社交媒体平台
- 研究场景:虚假信息传播、羊群效应、舆论形成等社会现象
- 架构:专用数据库 + 推荐系统 + 代理模块 + 时间引擎
- 论文:NeurIPS 2024 收录
OASIS 继承了 CAMEL 的 ChatAgent,并引入异步机制加速大规模并发代理仿真。
9. 合成数据生成 (Synthetic Data Generation)
CAMEL 最早且最有影响力的应用之一是 合成数据生成:
- AI Society 数据集:25,000+ 对话,两个 GPT-3.5 Turbo 代理生成
- Code 数据集:代码生成对话
- Math/Science 数据集:单轮问答
- Misalignment 数据集:模拟恶意应用,研究对齐风险
实际影响:CAMEL 生成的数据被用于训练:
- Databricks MPT-30B-Chat
- Microsoft Phi
- Teknium’s OpenHermes
这使 CAMEL 成为第一个用自己代理生成的数据来训练竞争对手模型的框架。
10. 与同类框架对比
| 维度 | CAMEL | AutoGen | CrewAI | LangGraph |
|---|
|——|——-|———|——–|———–|
| 发布时间 | 2023.03 (最早) | 2023.09 | 2023.12 | 2024.01 |
|---|---|---|---|---|
| 核心范式 | 角色扮演 | 对话式 | 任务流程 | 图状态机 |
| Agent 数量 | 百万级 (OASIS) | 数十 | 数十 | 数十 |
| 模型支持 | 40+ 提供商 | 中等 | 中等 | 广泛 |
| 工具数量 | 80+ | 20+ | 30+ | 50+ |
| MCP 支持 | 原生 | 无 | 无 | 无 |
| 学术论文 | NeurIPS 2023 | 无 | 无 | 无 |
| 仿真能力 | OASIS 百万级 | 无 | 无 | 无 |
| 合成数据 | 核心能力 | 无 | 无 | 无 |
| 人工干预 | HITL + 暂停/恢复 | 基础 | 基础 | 基础 |
CAMEL 的独特优势:
- 学术根基深厚:NeurIPS 论文奠定了理论基础
- 规模化验证:OASIS 项目证明了百万级代理的可行性
- 闭环进化:代理生成数据 → 训练更好模型 → 更好代理(自举循环)
- MCP 原生集成:Workforce 可直接暴露为 MCP 服务器
- 代码即提示:每行代码/注释都作为提示,人和代理都能理解和扩展
架构总览图
┌─────────────────────────────────────────────────────────────┐
│ CAMEL Framework │
├─────────────────────────────────────────────────────────────┤
│ Societies Layer │
│ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │ RolePlaying │ │ Workforce │ │
│ │ (双代理角色扮演) │ │ (多代理层级编排) │ │
│ │ User ↔ Assistant │ │ Coordinator → Workers │ │
│ │ + Critic (可选) │ │ + Task Agent + Dynamic │ │
│ └──────────────────┘ └──────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Agent Layer │
│ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ChatAgent│ │CriticAgent│ │TaskAgent │ │RoleAssignAgent│ │
│ └────┬────┘ └──────────┘ └──────────┘ └──────────────┘ │
│ │ │
├───────┼─────────────────────────────────────────────────────┤
│ │ Infrastructure Layer │
│ ┌────┴────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Models │ │ Memories │ │ Toolkits │ │ Messages │ │
│ │40+ LLMs│ │ 多层记忆 │ │ 80+ 工具 │ │ 多模态消息 │ │
│ └─────────┘ └──────────┘ └──────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Ecosystem │
│ OASIS (百万级仿真) · 合成数据 · MCP Server · Agent RL │
└─────────────────────────────────────────────────────────────┘
关键设计启示
- 角色扮演是最简多代理协调原语:两个代理、互补角色、轮替对话,就足以产生高质量合成数据
- 提示级约束优于框架级强制:通过系统提示维持角色一致性,保持了灵活性
- 规模化是研究目标而非工程目标:OASIS 的百万级仿真是为了发现代理行为的涌现规律
- 闭环数据生成是护城河:代理生成数据 → 训练模型 → 更好代理的自举循环
- 工具生态是粘性来源:80+ 工具包构成了难以复制的生态系统
发表回复