3.1 CAMEL框架简介
3.1.1 Multiple Agent基本概念
多智能体(Multiple Agent)由多个相互作用的智能体组成,每个智能体都有自己的目标和策略。他们之间可以协作,竞争,广泛应用于复杂的任务中。
3.1.2 什么是CAMEL?
CAMEL是一个开源的多智能体框架,ChatAgent
是最基础的智能体单元,负责处理对话逻辑和任务执行。而RolePlaying
和Workforce
则是多智能体系统,用于协调多个智能体的协作。
3.1.3 ChatAgent 简介
其设计目标是使智能体具备以下关键特性:
-
角色 (Role):结合目标和内容规范,设定智能体的初始状态,引导智能体在连续交互过程中采取行动。
-
大语言模型 (LLMs):每个智能体都使用大语言模型来增强认知能力。大语言模型使智能体能够理解和生成自然语言,从而解释指令、生成响应并参与复杂对话。
-
记忆 (Memory):包括上下文记忆和外部记忆,使智能体能够以更扎实的方式进行推理和学习。
-
工具 (Tools):智能体可以使用的一组功能,用于与外部世界交互,本质上是为智能体提供具身化能力。
-
通信 (Communication):我们的框架允许智能体之间进行灵活且可扩展的通信,这是解决关键研究问题的基础。
-
推理 (Reasoning):我们为智能体配备了不同的规划和奖励(评论员)学习能力,使其能够以更有指导性的方式优化任务完成。
3.1.4 Role Playing机制
RolePlaying是CAMEL框架的独特合作式智能体框架。该框架通过预定义的提示词为不同的智能体创建唯一的初始设置,帮助智能体克服诸如角色翻转、助手重复指令、模糊回复、消息无限循环以及对话终止条件等多个挑战。
3.1.4.1 基本概念
角色定义
-
Assistant角色: 负责执行具体任务并提供解决方案的智能体
-
User角色: 负责提供指令和任务需求的智能体
-
特定领域角色: 如程序员、交易员等专业角色
交互规则
# 初始prompt示例参考
system_message = """
===== RULES OF ASSISTANT =====
1. Never forget you are a {ASSISTANT_ROLE} and I am a {USER_ROLE}
2. Never flip roles! Never instruct me!
3. You must decline my instruction honestly if you cannot perform it
4. Always start with: Solution: <YOUR_SOLUTION>
5. Always end with: Next request.
"""
关键机制
-
角色固定: 防止角色翻转,维持对话的稳定性
-
格式规范: 要求回复具有固定的开始和结束格式
-
任务分解: 自动将复杂任务分解为可执行的子任务
-
循环对话: 通过轮流发言推进任务进展
工作流程
- 初始化阶段
- 设定角色身份
- 加载系统提示词
- 明确任务目标
- 执行阶段
- User提供具体指令
- Assistant执行并给出解决方案
- 循环往复直至完成任务
3.1.4.1 经典案例: 股票交易机器人详解
RolePlaying的作用是根据任务提示词,将任务分解为具体的任务小点,并与相应的AI角色进行交互。
assistant_role_name:助手角色
user_role_name:用户角色
task_prompt:用户输入的任务提示词
from colorama import Fore
from camel.societies import RolePlaying
from camel.utils import print_text_animated
def main(model=YOUR_MODEL, chat_turn_limit=50) -> None:
task_prompt = "Develop a trading bot for the stock market"
role_play_session = RolePlaying(
assistant_role_name="Python Programmer",
assistant_agent_kwargs=dict(model=model),
user_role_name="Stock Trader",
user_agent_kwargs=dict(model=model),
task_prompt=task_prompt,
with_task_specify=True,
task_specify_agent_kwargs=dict(model=model),
)
框架中的Agent可以将用户输入的较为抽象的任务(提示词)转化为具体的任务小点,以便更好地进行交互和实现具体的功能。
具体过程
步骤1: 任务提出
人类用户提出希望开发一个交易机器人。
步骤2: 定义AI角色
设定合适的AI角色(股票交易员和Python程序员)来实现用户的想法。
步骤3: 任务具像化
任务具体化Agent为AI角色提供明确的任务描述,以便更好地理解和执行。比如:将“开发一个用于股票市场的交易机器人。”进一步具像为:“开发一个基于机器学习的股票交易机器人,能够自动分析市场趋势、执行买卖操作,并实时调整策略以优化投资组合。”
步骤4: 任务拆分
总体任务会由AI用户(股票交易员)来进一步拆分为各个子任务,确保AI助手(Python程序员)能够理解并执行子任务。例如:
- 使用Python语言和Pandas库来处理股票数据。"
- "集成Alpha Vantage API以获取实时股票信息。"
步骤5: 对话和合作
- 程序员AI和交易员AI开始对话和合作:
- AI助手(Python程序员):“您需要哪些功能?”
- AI用户(股票交易员):“我需要这个软件能够获取股票数据和分析社交媒体情绪。”
- AI助手(Python程序员):“您需要安装必要的编程库包括.....,您希望交易机器人使用哪些技术指标?”
- AI用户(股票交易员):“我希望交易机器人在QuantumTraderX类中实现一个方法,根据预测执行交易。”
- AI助手(Python程序员):“好的,以下是实现的代码:......”
步骤6: 完成任务
通过这种对话和合作的方式,两个AI角色能够一步步地共同完成任务,最终创建出一个用于股票市场的交易机器人。
3.1.5 Workforce简介
本章涉及初学者没有接触过的概念性的东西,感觉都很重要,所以全盘复制了过来。
架构设计
Workforce采用层级架构设计。一个workforce可以包含多个工作节点(worker nodes),每个工作节点可以包含一个或多个智能体作为工作者。工作节点由workforce内部的协调智能体(coordinator agent)管理,协调智能体根据工作节点的描述及其工具集来分配任务。
除了协调智能体外,workforce内部还有一个任务规划智能体(task planner agent)。任务规划智能体负责任务的分解和组合,使workforce能够逐步解决任务。
通信机制
Workforce内部的通信基于任务通道(task channel)。Workforce初始化时会创建一个所有节点共享的通道。任务会被发布到这个通道中,每个工作节点会监听通道,接受分配给它的任务并解决。
当任务完成后,工作节点会将结果发布回通道,结果会作为其他任务的"依赖项"保留在通道中,供所有工作节点共享。
通过这种机制,workforce能够以协作和高效的方式解决任务。
故障处理
Workforce具有故障处理机制。当任务失败时,协调智能体会采取行动修复。这些行动可以是:
-
将任务分解为更小的任务并重新分配
-
创建一个能够完成该任务的新工作者
目前,协调智能体根据任务被分解的次数来做决策:
-
如果任务已经被分解超过特定次数,协调智能体会创建新的工作者
-
如果没有超过,协调智能体会采取任务分解的行动
有些任务可能智能体根本无法解决。为了防止workforce陷入无限的智能体创建循环,如果一个任务失败次数超过特定次数(默认为3次),workforce将会停止。