当前位置: 首页 > news >正文

框架(三)CAMEL

前面已经学习了AutoGenAgentScope两个多智能体框架,今天继续学习第三个经典框架——CAMEL

与前两个框架相比,CAMEL 并没有设计复杂的消息调度或工作流,而是提出了一种非常有意思的思想:让多个 AI 扮演不同角色,通过不断对话自主完成任务。

这种"角色扮演(Role Playing)"也是 CAMEL 最具代表性的特点。


一、什么是 CAMEL?

CAMEL(Communicative Agents for "Mind" Exploration of Large Language Model Society)最初的目标,就是研究如何让多个 AI 在尽可能少的人类干预下,通过自主对话完成复杂任务。

例如开发一个股票交易工具:

  • AI 用户:股票交易员,负责提出需求。
  • AI 助理:Python 工程师,负责实现代码。

整个过程就像真实团队协作一样。

股票交易员 │ 提出需求 │ ▼ Python 工程师 │ 实现功能 │ 返回结果 │ 继续协作

相比 AutoGen 更偏向"多 Agent 调度",CAMEL 更强调不同角色之间的自然协作


二、CAMEL 的核心思想

CAMEL 的设计主要围绕两个概念展开:

  • Role Playing(角色扮演)
  • Inception Prompting(引导性提示)

1、Role Playing(角色扮演)

CAMEL 会为每个 Agent 指定一个明确身份,每个角色负责不同工作。

例如:

AI User:

作家

负责:

  • 规划章节
  • 提出写作需求
  • 调整整体结构

AI Assistant:

心理学家

负责:

  • 提供专业知识
  • 补充理论依据
  • 保证内容科学性

整个任务就在两个不同领域专家之间不断推进。


2、Inception Prompting(引导性提示)

仅仅告诉 AI:

你是一位心理学家。

其实是不够的。

CAMEL 会在聊天开始前,为两个 Agent 自动生成一份System Prompt,其中通常包含:

  • 自己的角色
  • 合作对象是谁
  • 当前共同目标
  • 回复规则
  • 任务结束标志

例如:

你是一名心理学家。 你正在与一位专业作家合作。 共同完成一本关于拖延症心理学的电子书。 任务完成后输出: <CAMEL_TASK_DONE>

这样可以保证整个对话始终围绕同一个目标进行,而不会轻易跑题。


三、案例:AI 协作创作一本电子书

下面通过官方案例体验 CAMEL 的角色协作能力。

目标:

创作一本《拖延症心理学》电子书。

两个 Agent 分别负责:

心理学家(Psychologist)

  • 提供专业理论
  • 引用研究成果
  • 保证科学严谨

作家(Writer)

  • 组织文章结构
  • 优化语言表达
  • 提升可读性

最终共同完成一本适合普通读者阅读的科普电子书。


四、创建模型

首先创建大模型,这里以 Qwen 为例。

model = ModelFactory.create( model_platform=ModelPlatformType.QWEN, model_type=LLM_MODEL, url=LLM_BASE_URL, api_key=LLM_API_KEY )

这里只负责创建模型对象,后续 RolePlaying 会直接使用该模型完成对话。


五、定义协作任务

接下来定义整个协作目标。

task_prompt = """ 创作一本关于"拖延症心理学"的短篇电子书。 要求: 1. 内容科学严谨 2. 通俗易懂 3. 包含案例分析 4. 8000~10000字 5. 结构清晰 """

这里的task_prompt可以理解为整个协作任务的说明书。

后续 CAMEL 会根据任务内容自动生成 Prompt,引导两个 Agent 围绕这一目标开展讨论。


六、创建 RolePlaying

接下来创建角色协作会话。

role_play_session = RolePlaying( assistant_role_name="心理学家", user_role_name="作家", task_prompt=task_prompt, model=model, with_task_specify=False, )

这里指定了两个角色:

  • user_role_name:作家(提出需求)
  • assistant_role_name:心理学家(提供专业内容)

整个双 Agent 协作环境就创建完成了。


七、启动自动协作

首先调用:

input_msg = role_play_session.init_chat()

这一方法会根据任务和角色自动生成第一轮消息,因此无需我们手动编写开场白。

随后进入循环:

assistant_response, user_response = role_play_session.step(input_msg)

每调用一次step(),都会完成一轮完整协作:

作家提出需求 │ ▼ 心理学家提供专业内容 │ ▼ 进入下一轮讨论

随后:

input_msg = assistant_response.msg

将上一轮回复作为下一轮输入,不断推进整个任务。


八、结束协作

为了避免无限循环,一般有两种结束方式。

达到最大轮数:

chat_turn_limit = 30

或者检测任务完成标志:

if "<CAMEL_TASK_DONE>" in assistant_response.msg.content: break

当任意一个 Agent 输出<CAMEL_TASK_DONE>时,说明任务已经完成,程序自动结束。


九、整体协作流程

整个案例的执行流程如下:

定义任务 │ 创建两个角色 │ 初始化 RolePlaying │ AI 自动开始对话 │ 不断调用 step() │ 输出 <CAMEL_TASK_DONE> │ 结束任务

整个过程中基本不需要人工参与,两个 Agent 会围绕共同目标不断讨论,直到完成任务。


十、CAMEL 的优缺点

优点

  • 角色扮演思想简单直观,多个 Agent 就像真实团队协作。
  • Prompt 驱动,无需复杂工作流即可完成多轮协作。
  • 上手简单,非常适合内容创作、方案讨论等场景。

不足

  • 对 Prompt 质量依赖较高,Prompt 不合理容易影响协作效果。
  • 更适合少量 Agent,对大规模多智能体调度支持相对有限。
  • 工作流控制能力不如 LangGraph,工程化能力也弱于 AgentScope。

十一、完整代码

DigitalBookWriting.py
from colorama import Fore from camel.societies import RolePlaying from camel.utils import print_text_animated from camel.models import ModelFactory from camel.types import ModelPlatformType from dotenv import load_dotenv import os load_dotenv() LLM_API_KEY = os.getenv("LLM_API_KEY") LLM_BASE_URL = os.getenv("LLM_BASE_URL") LLM_MODEL = os.getenv("LLM_MODEL") #创建模型,在这里以Qwen为例,调用的百炼大模型平台API model = ModelFactory.create( model_platform=ModelPlatformType.QWEN, model_type=LLM_MODEL, url=LLM_BASE_URL, api_key=LLM_API_KEY ) # 定义协作任务 task_prompt = """ 创作一本关于"拖延症心理学"的短篇电子书,目标读者是对心理学感兴趣的普通大众。 要求: 1. 内容科学严谨,基于实证研究 2. 语言通俗易懂,避免过多专业术语 3. 包含实用的改善建议和案例分析 4. 篇幅控制在8000-10000字 5. 结构清晰,包含引言、核心章节和总结 """ print(Fore.YELLOW + f"协作任务:\n{task_prompt}\n") # 初始化角色扮演会话 role_play_session = RolePlaying( assistant_role_name="心理学家", user_role_name="作家", task_prompt=task_prompt, model=model ) print(Fore.CYAN + f"具体任务描述:\n{role_play_session.task_prompt}\n") # 开始协作对话 chat_turn_limit, n = 30, 0 input_msg = role_play_session.init_chat() while n < chat_turn_limit: n += 1 assistant_response, user_response = role_play_session.step(input_msg) print_text_animated(Fore.BLUE + f"作家:\n\n{user_response.msg.content}\n") print_text_animated(Fore.GREEN + f"心理学家:\n\n{assistant_response.msg.content}\n") # 检查任务完成标志 if "CAMEL_TASK_DONE" in user_response.msg.content: print(Fore.MAGENTA + "✅ 电子书创作完成!") break input_msg = assistant_response.msg print(Fore.YELLOW + f"总共进行了 {n} 轮协作对话")
requirements.txt
code/chapter6/CAMEL/requirements.txt

总结

CAMEL 最大的特点就是通过Role Playing(角色扮演)Inception Prompting(引导性提示)实现多智能体协作。

相比 AutoGen,它没有复杂的调度机制,而是让不同角色通过持续对话自然完成任务;相比 AgentScope,它更加轻量,代码也更加简洁。

如果你的应用场景偏向内容创作、方案设计、头脑风暴等需要多个角色共同协作的任务,那么 CAMEL 是一个非常值得学习的多智能体框架。

http://www.jsqmd.com/news/1217481/

相关文章:

  • AI智能体时代来临——从“能说“到“会干“的跃迁
  • Linux基础常用命令教学:从入门到熟练
  • MIPI CSI-2协议像素数据格式深度解析:从YUV、RAW到RGB的传输与调试
  • 现代Web文件上传技术:从基础实现到企业级解决方案
  • 苏州万国回收价格查询和靠谱回收平台实测排行(2026年7月最新数据) - 诚收名表回收平台
  • Whisper本地化部署实战:中文语音转文字的精度、速度与隐私平衡术
  • 冰柜一级能效实测:省电≠省钱,选购与使用全攻略
  • STM8S硬件I2C局限与GPIO模拟实现详解
  • Python线性回归实现智慧交通客流量预测系统开发实战
  • C++跨平台开发兼容性难题:从根源剖析到系统性解决方案
  • 异常值处置决策框架:从业务语义到建模鲁棒性的实战指南
  • Python条件判断if-else语句详解与实战技巧
  • Flask消息闪现机制解析与应用实践
  • Unity卡牌游戏UI性能优化实战:虚拟列表、动态合图与渲染优化
  • .NET 高级调试技术:超越基础 Dump 分析
  • 一篇吃透Python字符串!从入门API到花式操作全指南
  • 厦门欧米茄回收价格查询和各大平台实测排行(2026年7月最新) - 嘉价奢侈品回收平台
  • Unity专业版功能解析与合法开发环境搭建指南
  • 三、业务效果(定性)
  • 客户专程进厂看进度,为何转头就追加订单?
  • SVG路径驱动的点状进度条:高精度、可访问、可交互
  • 实惠的东阳的装修
  • Java缓存
  • AI大模型接入SDK—通用模块设计
  • 2026企业AI Agent工具深度横评:Codex平替选型指南
  • C# WinForms中国象棋开发:从GDI+绘图到AI算法实现
  • LPC1220 GPIO控制LED实战:TKStudio环境配置与调试技巧
  • 2023国产高主频MCU技术解析与选型指南
  • C# Channel异步通信:原理、实战与性能优化
  • 大麦网抢票终极指南:5分钟快速上手Python自动化抢票脚本