CAMEL Multi-Agent 多智能体入门1

CAMEL Multi-Agent 多智能体学习 1

一、环境配置准备
  1. 获取CAMEL
  • 在python中安装CAMEL库

    pip install "camel-ai[all]==0.2.19"
    
  1. 获取API KEY

    我们可以去魔搭社区,绑定阿里巴巴云账号之后,就可与获取到API KEY了

在这里插入图片描述

  1. 使用API 调用模型
  • 调用DeepseekR1模型

这里我们使用CAMEL中的ChatAgent模块来简单调用一下Deepseek-R1模型

调用代码如下:

我们来问问它是谁

from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type='deepseek-ai/DeepSeek-R1',
    url='https://api-inference.modelscope.cn/v1/',
    api_key='替换为自己的API key'
)
agent = ChatAgent(
    model=model,
    output_language='中文'
)

response = agent.step("你好,请说明你是谁,并简单介绍自己")
print(response.msgs[0].content)

deepseek的回答如下:

您好!我是DeepSeek-R1,一个由深度求索公司开发的智能助手。我基于大数据和机器学习技术训练而成,能够理解多语言、处理复杂逻辑推理,并通过实时联网获取最新信息。我的核心功能包括日常问题解答、学习辅助、任务规划、多模态内容生成等,旨在为用户提供高效准确的信息服务。若您有任何需求,随时告诉我即可~
在这里插入图片描述

(有warning可忽略~ 我尝试加上过max_tokens 但报错了)

  • 调用多模态模型通义千问QVQ-72B-Preview

    我们输入一张图片的URL 和 问题
    在这里插入图片描述

    “请描述这张图片的内容“

    from camel.agents import ChatAgent
    from camel.models import ModelFactory
    from camel.types import ModelPlatformType
    from camel.messages import BaseMessage
    
    from io import BytesIO
    import requests
    from PIL import Image
    
    
    model = ModelFactory.create(
        model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
        model_type="Qwen/QVQ-72B-Preview",
        url='https://api-inference.modelscope.cn/v1/',
        api_key='自己的api'
    )
    
    agent = ChatAgent(
        model=model,
        output_language='中文'
    )
    
    # 图片URL
    url = "https://img0.baidu.com/it/u=2205376118,3235587920&fm=253&fmt=auto&app=120&f=JPEG?w=846&h=800"
    response = requests.get(url)
    img = Image.open(BytesIO(response.content))
    
    user_msg = BaseMessage.make_user_message(
        role_name="User",
        content="请描述这张图片的内容",
        image_list=[img]  # 将图片放入列表中
    )
    
    response = agent.step(user_msg)
    print(response.msgs[0].content)
    
    
    

    通义千问的回答如下:

    这是一张金毛寻回犬的特写照片。这只狗有着浓密的金色毛发,耳朵垂在头部两侧,眼睛明亮而有神,黑色的鼻子显得很突出。它的嘴巴微微张开,露出了粉红色的舌头,看起来非常友好和活泼。背景是一片模糊的绿色,可能是在户外的自然环境中拍摄的。整体来说,这张照片展示了一只健康、快乐的金毛寻回犬,它的表情充满了热情和活力。

二、使用CAMEL来开发机器人

在这一部分会使用到CAMEL的核心模块之一RolePlaying

我们来运用这个模块多轮迭代创造一个交易机器人

代码步骤如下:

初始化角色

  • AI 助手 = Python 程序员
  • AI 用户 = 股票交易员

任务目标

  • 股票交易员指引 Python 程序员完成交易机器人开发。

对话循环

  • AI 助手和 AI 用户不断交互,基于 AI 生成的消息驱动对话,直到达到上限或任务完成。

终止条件

  • 达到最大轮数
  • AI 认为任务已完成
  • AI 返回终止信号

代码如下 内含有关键注释

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()
#这里要记得自己增加.env文件存放api_key
api_key = os.getenv('API_KEY')

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type='deepseek-ai/DeepSeek-R1',
    url='https://api-inference.modelscope.cn/v1/',
    api_key=api_key
)


#默认对话轮数上线为50回合
def main(model=model, chat_limit=50):
    task_prompt = "请为股票市场开发一个交易机器人"
    # 一、定义角色扮演会话
    role_playing = RolePlaying(
        assistant_role_name="Python 程序员",  # AI助手的角色是"Python程序员"
        assistant_agent_kwargs=dict(model=model),  # AI助手使用指定的模型

        user_role_name="股票交易员",
        user_agent_kwargs=dict(model=model),

        task_prompt=task_prompt,  # 设定任务目标
        with_task_specify=True,  # 启用任务详细描述
        task_specify_agent_kwargs=dict(model=model),  # AI助手生成详细任务描述
        output_language='中文'
    )

    # 二、打印初始信息
    # Fore 是 colorama 库中的一个模块,用于在终端中更改文本颜色。
    print(
        Fore.GREEN
        + f"AI 助手系统消息:\n{role_playing.assistant_sys_msg}\n"
    )
    # AI 助手系统消息 (assistant_sys_msg):AI 作为“Python 程序员”如何执行任务的提示信息。
    print(
        Fore.BLUE + f"AI 用户系统消息:\n{role_playing.user_sys_msg}\n"
    )
    # AI 用户系统消息 (user_sys_msg):AI 作为“股票交易员”提供的任务指导信息。
    print(Fore.YELLOW + f"原始任务提示:\n{task_prompt}\n")
    print(
        Fore.CYAN
        + "指定的任务提示:"
        + f"\n{role_playing.specified_task_prompt}\n"
    )
    # 指定的任务提示(specified_task_prompt):任务经过AI处理后的详细版本。
    print(Fore.RED + f"最终任务提示:\n{role_playing.task_prompt}\n")

    # 三、开始对话,对话循环
    n = 0
    # 获取 AI 用户(股票交易员)的初始问题。
    input_msg = role_playing.init_chat()

    while n < chat_limit:
        n += 1
        # 让AI 助手(Python 程序员)和 AI 用户(股票交易员)交互,返回双方的消息。
        assistant_response, user_response = role_playing.step(input_msg)

        # 如果终止 打印终止信息并退出
        if assistant_response.terminated:
            print(Fore.GREEN + ("AI 助手已终止。原因: "
                                f"{assistant_response.info['termination_reasons']}."
                                )
                  )
            break
        if user_response.terminated:
            print(
                Fore.GREEN
                + (
                    "AI 用户已终止。"
                    f"原因: {user_response.info['termination_reasons']}."
                )
            )
            break

        # 打印 AI用户和AI助手 交互内容
        print_text_animated(
            Fore.BLUE + f"AI 用户:\n\n{user_response.msg.content}\n"
        )
        print_text_animated(
            Fore.GREEN + "AI 助手:\n\n"
                         f"{assistant_response.msg.content}\n"
        )

        # 任务完成检测 如果 AI 用户的消息包含 "CAMEL_TASK_DONE",说明任务已完成 终止
        if "CAMEL_TASK_DONE" in user_response.msg.content:
            break

        # 更新输入消息 将 AI 助手的最新回复作为下一轮 AI 用户(股票交易员)的输入,继续对话。
        input_msg = assistant_response.msg


if __name__ == "__main__":
    main()

接下来让我们运行代码

首先出来的是初始信息,任务提示经过进一步的指定,变得更为详细和具体,确定两个AI角色的任务及规范

任务是逐步进行的,AI 用户在任务执行过程中将持续给出指令,AI 助手提供相应的技术实现。

任务完成标志是 AI 用户回复 <CAMEL_TASK_DONE>

在这里插入图片描述

接下来开始进行多轮对话,以下是第一轮对话的片段

在这里插入图片描述

最终就能完成任务 让两个AI配合开发出一个股票预测机器人

以上就是初步的创建智能体进行对话迭代完成任务的过程

当然你也可以修改model_type参数来使用不同的模型,比如通义千问、ChatGPTLlama

或者修改output_language参数 来更改AI输出的语言,换成英文或者日语都可以

内容概要:本文详细介绍了一个开源多智能体框架——CAMEL Multi-Agent。该框架旨在让初学者和专业人士都能更轻松地设计、开发和部署多智能体应用。文中阐述了框架的基本理念、核心技术和优势,以及通过实际案例展示了如何使用CAMEL构建智能体,并探讨其在未来AI发展方向的影响。文章指出CAMEL的特点包括但不限于易于上手、灵活性高、易于扩展和完善、有强大的社区支持,并强调CAMEL不仅适用于学术研究,也能够帮助企业提升业务效率。最后,文章讲述了如何通过环境配置、定义角色、添加工具等方式使用CAMEL开发智能体,包括使用RAG(检索增强生成)技术提高信息检索质量和效率的具体应用示例。 适合人群:有一定编程基础的技术爱好者,尤其是希望深入理解智能体开发及其在实际场景中应用的程序员或研究人员。 使用场景及目标:适用于想要学习多智能体系统开发的人群,在实践中通过具体项目来理解智能体是如何交互以及解决复杂问题的过程;同时也适用于企业和机构进行创新性项目的研究和技术落地。 其他说明:文档中还包含了详细的安装指导、丰富的案例代码片段及深入的技术探讨,帮助使用者全方位掌握CAMEL Multi-Agent Framework。对于有兴趣参与CAMEL项目贡献的人来说,本文档也提供了具体的途径与方法。此外,文章还提及了几种重要的附加功能,比如上下文学习(In-Context Learning)、思维链(CoT),以及如何利用Prompt来创造特定任务Agent等先进的AI技术,使开发出的系统更能适应复杂的实际情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limelight-755

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值