【笔记】Handy Multi-Agent Tutorial 第三章: CAMEL框架简介及实践(简介部分)

正文详见:‍​​​⁠​​‌​‍⁠​‍​​​​​​​‬​​​​‌‌‌​⁠‬⁠​‬​​​‬​​‍​​​​‌​Handy Multi-Agent Tutorial - 飞书云文档https://fmhw1n4zpn.feishu.cn/docx/AF4XdOZpIo6TOaxzDK8cxInNnCe

3.1 CAMEL框架简介

3.1.1 Multiple Agent基本概念

多智能体(Multiple Agent)由多个相互作用的智能体组成,每个智能体都有自己的目标和策略。他们之间可以协作,竞争,广泛应用于复杂的任务中。

3.1.2 什么是CAMEL?

CAMEL是一个开源的多智能体框架,ChatAgent是最基础的智能体单元,负责处理对话逻辑和任务执行。而RolePlayingWorkforce则是多智能体系统,用于协调多个智能体的协作。

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将会停止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值