Handy Multi-agent with Camel - task01 环境配置

这次task来自datawhale的camel项目

1.配置步骤

1.1 创建python

我这里是直接用anaconda创建虚拟环境,然后git命令拉取came-ai的源码来安装camel

  • 环境配置
conda create--name camel python=3.10 -y
conda activate camel
  • 拉取camel源码安装
git clone -b v0.2.23a0 https://github.com/camel-ai/camel.git
cd camel
pip install -e .[all]

1.2 配置远程大模型的API

目前先按照这个来做,以后再调用本地大模型。
这里选取的ModelScope社区来使用API,每天有2000次调用,足够调试使用了。申请是挺简单的。但有一点要注意的是,依照其社区目前特点,这里网页左边那一栏有个叫模型服务,需要先绑定阿里巴巴账号,不然后面API调用不成功的。

当申请成功,社区会给你一个KEY,一般我们不会明文写在代码里,这里可以用python的dotenv库来管理API密钥。

pip install python-dotenv

然后在项目根目录文件夹下创建一个名为 .env 的文件,在里面填写你的密钥,格式如下

API_KEY=你的api密钥

1.3 写一个简单示例:开发一个交易机器人

这里代码核心是RolePlaying

整篇代码关键流程如下:

  • 通过ModelFactory创建支持中文的Qwen大模型

  • 构建股票交易员(用户)与Python程序员(助手)的角色场景

  • 自动细化初始任务提示词

  • 进行多轮角色对话:

    • 用户提出需求

    • 助手给出方案

    • 持续交互直到任务完成或达到50轮限制

  • 彩色终端输出增强可读性

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(dotenv_path='.env')

api_key = os.getenv('QWEN_API_KEY')

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL, # 平台类型,OPENAI适配的模型
    model_type="Qwen/Qwen2.5-72B-Instruct", # 指定模型名称
    url='https://api-inference.modelscope.cn/v1/', #  API地址
    api_key=api_key
)

def main(model=model, chat_turn_limit=50) -> None:
    # 1.设置任务目标
    task_prompt = "为股票市场开发一个交易机器人"

    # 2.初始化角色扮演场景 (这里就设置两种角色:用户与助手)
    role_play_session = RolePlaying(
        assistant_role_name="Python 程序员",#设置AI助手角色名
        assistant_agent_kwargs=dict(model=model), # 指定助手模型配置
        user_role_name="股票交易员",#设置用户角色名,在roleplay中,user用于指导AI助手完成任务
        user_agent_kwargs=dict(model=model), # 指定用户模型配置
        task_prompt=task_prompt, # 初始任务提示
        with_task_specify=True, # 启用任务细化
        task_specify_agent_kwargs=dict(model=model), # 指定任务细化模型
        output_language='中文'#设置输出语言
    )

    # 3.使用不同颜色打印各类系统信息
    print(Fore.GREEN + f"AI 助手系统消息:\n{role_play_session.assistant_sys_msg}\n") # 助手角色系统提示
    print(Fore.BLUE + f"AI 用户系统消息:\n{role_play_session.user_sys_msg}\n") # 用户角色系统提示
    print(Fore.YELLOW + f"原始任务提示:\n{task_prompt}\n") # 初始任务
    print(Fore.CYAN+ "指定的任务提示:"+ f"\n{role_play_session.specified_task_prompt}\n") # 细化后的任务
    print(Fore.RED + f"最终任务提示:\n{role_play_session.task_prompt}\n") # 最终确定的任务


    # 4. 对话循环
    n = 0
    input_msg = role_play_session.init_chat() # 初始化对话
    while n < chat_turn_limit: # 默认最多50轮对话
        n += 1
        # 4.1 执行一步对话
        assistant_response, user_response = role_play_session.step(input_msg)

        # 4.2 检查终止条件
        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

        # 4.3 动画效果打印对话内容
        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")

        if "CAMEL_TASK_DONE" in user_response.msg.content: # 任务完成
            break

        input_msg = assistant_response.msg # 更新输入消息

if __name__ == "__main__":
    main()

1.4 改用deepseek模型

本来想用deepseek-reasoner,但是报错:'The last message of deepseek-reasoner must be a user message, or an assistant message with prefix mode。可惜我对camel还没那么深入了解,怎么加这个message 或者 prefix mode。等后面再回过头来再看看,这里先用deepseek-chat

api_key = os.getenv('DS_API_KEY')

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL, # 平台类型,OPENAI适配的模型
    # model_type="Qwen/Qwen2.5-72B-Instruct", # 指定模型名称
    model_type="deepseek-chat", # 指定模型名称
    # url='https://api-inference.modelscope.cn/v1/', #  API地址
    url='https://api.deepseek.com', #  API地址
    api_key=api_key
)

智能体终于完成任务,如下图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值