【CMAEL多智能体框架】第一节 环境搭建及简单应用(构建一个鲜花选购智能体)

news/2025/2/13 21:39:33/

第一节 环境搭建


文章目录

  • 第一节 环境搭建
  • 前言
  • 一、安装
  • 二、获取API
    • 1. 使用熟悉的API代理平台
    • 2.设置不使用明文存放API
  • 三 、具体应用
    • 进阶任务
  • 总结


前言

CAMEL Multi-Agent是一个开源的、灵活的框架,它提供了一套完整的工具和库,用于构建和模拟多智能体系统。它支持多种编程语言和平台,使得开发者能够根据自己的需求和偏好选择合适的工具。
这里附上 CMAEL的github链接 :

  • 教程地址:https://github.com/datawhalechina/camel-agent-tutorial
  • CAMEL: https://github.com/camel-ai/camel

一、安装

教程中提供了很多安装的方式,为了避免环境冲突,笔者这里选择比较熟悉的 conda创建

代码如下:

conda create --name camel python=3.10
conda activate camel
git clone -b v0.2.19 https://github.com/camel-ai/camel.git
cd camel
pip install -e .[all]

接下来就是漫长的等待安装了!

二、获取API

1. 使用熟悉的API代理平台

例如 硅基流动ModelScope

笔者这里选择ModelScop,获取到自己的SDK令牌
在这里插入图片描述在本地测试一下能不能跑一个语言模型的测试代码出来:
如下图,创建一个py文件,做测试
在这里插入图片描述我们运行:

python haha.py

在这里插入图片描述可以发现调用成功了。
接下来我们测试一个调用多模态模型
在这里插入图片描述我们要求模型分析图片内容
在这里插入图片描述

2.设置不使用明文存放API

明文存放API是危险的,毕竟防人之心不可无,API除了免费赠送的就是自费购买的(都是money呀)
我们可以使用dotenv 来管理 API 密钥,首先我们安装python-dotenv 库

pip install python-dotenv

之后在外面的项目根目录创建一个名为 .env 的文件,并在其中添加你的 API 密钥:

QWEN_API_KEY=你的api密钥

其实贴心的 CMAEL框架已经帮我们创建好了 .env
在这里插入图片描述重新调用模型也是没问题的。
在这里插入图片描述

三 、具体应用

接下来我们将根据教程创建一个股市交易智能体

python">from colorama import Forefrom camel.societies import RolePlaying
from camel.utils import print_text_animated
from camel.models import ModelFactory
from camel.types import ModelPlatformTypefrom dotenv import load_dotenvimport osload_dotenv(dotenv_path='.env')api_key = os.getenv('QWEN_API_KEY')model = ModelFactory.create(model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,model_type="Qwen/Qwen2.5-72B-Instruct",url='https://api-inference.modelscope.cn/v1/',api_key=api_key
)def main(model=model, chat_turn_limit=50) -> None:task_prompt = "为股票市场开发一个交易机器人"#设置任务目标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='中文'#设置输出语言)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")n = 0input_msg = role_play_session.init_chat()while n < chat_turn_limit:n += 1assistant_response, user_response = role_play_session.step(input_msg)if assistant_response.terminated:print(Fore.GREEN+ ("AI 助手已终止。原因: "f"{assistant_response.info['termination_reasons']}."))breakif user_response.terminated:print(Fore.GREEN+ ("AI 用户已终止。"f"原因: {user_response.info['termination_reasons']}."))breakprint_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:breakinput_msg = assistant_response.msgif __name__ == "__main__":main()

在这里插入图片描述

进阶任务

我想要创建一个鲜花选购智能体,帮助客户进行自助选花,给出专属选择建议。
在这里插入图片描述在这里插入图片描述可以看到基本实现了我的需求,但是并不成熟,比较粗糙。需要后面随着课程的深入进一步优化。

总结

通过本节的学习,我成功搭建了CAMEL Multi-Agent框架的环境,并初步掌握了如何使用该框架创建多智能体系统。
通过实际案例的演练,我了解了如何设置任务提示、角色名称和输出语言,以及如何通过角色扮演的方式实现智能体之间的对话。
尽管初步实现了功能,但智能体的表现仍有提升空间,后续课程将进一步优化和完善。

http://www.ppmy.cn/news/1571803.html

相关文章

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式&#xff1a;通过隐藏对象创建的细节&#xff0c;避免直接使用 new 关键字实例化对象&#xff0c;从而使程序在判断和创建对象时更具灵活性。常见的模式包括&#xff1a; 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式&#xff1a;通…

性格测评小程序01需求分析

目录 1 MBTI 性格测评工具2 MBTI 的四个核心维度3 测评搭建的思路3.1 【外向 vs 内向&#xff08;E/I&#xff09;】&#xff08;10 题&#xff0c;每题得分范围&#xff1a;0.5&#xff5e;3.2&#xff0c;较高数值表示偏向外向&#xff09;3.2 【感觉 vs 直觉&#xff08;S/N…

《图解设计模式》笔记(八)管理状态

十七、Observer模式&#xff1a;发送状态变化通知 Observer &#xff1a;“进行观察的人”&#xff0c;也就是“观察者”。 在 Observer模式中&#xff0c;当观察对象的状态发生变化时&#xff0c;会通知给观察者。 适用场景&#xff1a;根据对象状态进行相应处理. 示例程序…

Qt plugin 插件 如何内嵌json作为metaData

环境msvc2017 Qt5.12.12 本文使用的插件&#xff0c;搭建过程在此&#xff1a; https://blog.csdn.net/weixin_45930811/article/details/143619681?spm1001.2014.3001.5502 1.在插件实例类的同级目录下&#xff0c;新建json 2.json内容&#xff1a; {"name": &…

嵌入式C语言:大小端详解

目录 一、大小端的概念 1.1. 大端序&#xff08;Big-endian&#xff09; 1.2. 小端序&#xff08;Little-endian&#xff09; 二、大小端与硬件体系的关系 2.1. 大小端与处理器架构 2.2. 大小端与网络协议 2.3. 大小端对硬件设计的影响 三、判断系统的大小端方式 3.1.…

Visual Studio踩过的坑

统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定&#xff0c;供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意&#xff1a;只是看&#xff0…

安装mariadb+galera搭建数据库集群

记一次安装mariadbgalera搭建数据库集群过程。 背景&#xff1a;使用单机mariadb数据库提供服务&#xff0c;存在数据无实时备份&#xff0c;数据服务器无切换等问题&#xff0c;无法应对服务器故障停服&#xff0c;无法持续提供数据服务的情况。之前使用几种方法解决 mysqldu…