七、使用CamelAI实现代码助手Agent ——《动手学Agent应用开发》学习心得
七、使用CamelAI实现代码助手Agent ——《动手学Agent应用开发》学习心得
==================================================================================
最近参加了Datawhale开源组织举办的组队学习。
【教程地址】
https://gitlink.org.cn/datawhalechina/build_good_agents
==================================================================================
参考资料:
==================================================================================
通义千问3-30B-A3B-Instruct-2507 · 模型库 (modelscope.cn)
DeepSeek+Camel多智能体框架万字核心解析(附代码)_智能体camel-CSDN博客
==================================================================================
CAMEL Multi-Agent 是一个开源的灵活框架,专注于构建和模拟多智能体系统(MAS)。它提供了一套完整的工具链,支持从智能体角色定义、协作流程设计到复杂环境模拟的全流程开发。其核心优势在于 轻量级架构、高度可定制化 和 面向多角色协作的交互设计,特别适合需要模拟人类-智能体或智能体-智能体协作的场景。
与 LangChain 的区别
LangChain 侧重 单智能体场景下的工具链集成,而 CAMEL 专精于 多智能体的角色化协作。例如在「产品需求评审」场景中:
LangChain 更适合构建一个能调用市场数据API的独立分析师智能体
CAMEL 则擅长模拟产品经理、工程师、测试人员的多方协作过程
1、在魔搭创建创空间
在站点页面完成创空间创建后,平台将为该创空间分配一个 Git 存储地址,可在“创空间详情-空间内容”页面获取。
启动魔搭notebook实例,在JupyterLab中使用git方式添加创空间文件。
2、安装 camel-ai
启动魔搭notebook实例,在Terminal中 pip直接安装
pip install camel-ai

3、接口测试与参数细节
3.1、新建test.py
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL, # 指定模型平台类型为OpenAI兼容模型
model_type="Qwen/Qwen3-30B-A3B-Instruct-2507", #指定模型类型
url="https://api-inference.modelscope.cn/v1", #指定API基础URL
api_key="你的api_key" #指定API密钥
)
agent = ChatAgent(
model=model,
output_language='中文'
)
response = agent.step("你好,你是谁?")
print(response.msgs[0].content)

3.2、通过环境变量来访问API_KEY
在当前根目录下创建一个.env文件,然后再其中设置环境变量

也可以将这个模型名称和BaseURL也作为环境变量存储

3.3、安装python-dotenv访问环境变量
pip install python-dotenv
修改代码
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.types import ModelPlatformType
from dotenv import load_dotenv
import os
load_dotenv()
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
model_type=os.getenv("MODEL_TYPE"),
url=os.getenv("OPENAI_API_BASE"),
api_key=os.getenv("OPENAI_API_KEY")
)
agent = ChatAgent(
model=model,
output_language='中文'
)
response = agent.step("你好,介绍一下AI Agent!")
print(response.msgs[0].content)

4、完成一个下载京东商品信息的Agent
参考官方的脚本构建一个下载京东商品信息的Agent
from colorama import Fore # 导入colorama库,用于在控制台中输出彩色文本
from camel.societies import RolePlaying # 导入RolePlaying类,用于角色扮演会话
from camel.utils import print_text_animated # 导入print_text_animated函数,用于动画效果打印文本
from camel.models import ModelFactory # 导入ModelFactory类,用于创建模型实例
from camel.types import ModelPlatformType # 导入ModelPlatformType枚举,用于指定模型平台类型
from dotenv import load_dotenv # 导入load_dotenv函数,用于加载环境变量
import os # 导入os模块,用于操作系统相关功能
load_dotenv() # 从.env文件中加载环境变量
# 使用ModelFactory创建DeepSeek模型实例
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL, # 指定模型平台类型为OpenAI兼容模型
model_type=os.getenv("MODEL_TYPE"), # 从环境变量中获取模型类型
url=os.getenv("OPENAI_API_BASE"), # 从环境变量中获取API基础URL
api_key=os.getenv("OPENAI_API_KEY") # 从环境变量中获取API密钥
)
def main(model=model, chat_turn_limit=3) -> None:
task_prompt = "开发一个京东紧固件商品信息爬取和下载的Agent,能够根据用户提供的关键词或主题自动搜索、筛选并下载相关商品信息" # 设置任务目标
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='中文' # 设置输出语言为中文
)
# 打印AI助手的系统消息
print(
Fore.GREEN
+ f"AI 助手系统消息:\n{role_play_session.assistant_sys_msg}\n"
)
# 打印AI用户的系统消息
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 = 0 # 初始化对话轮次计数器
input_msg = role_play_session.init_chat() # 初始化聊天会话
while n < chat_turn_limit: # 限制对话轮次
n += 1
# 执行一步对话,获取AI助手和AI用户的响应
assistant_response, user_response = role_play_session.step(input_msg)
# 如果AI助手终止对话,打印终止原因并退出循环
if assistant_response.terminated:
print(
Fore.GREEN
+ (
"AI 助手已终止。原因: "
f"{assistant_response.info['termination_reasons']}."
)
)
break
# 如果AI用户终止对话,打印终止原因并退出循环
if user_response.terminated:
print(
Fore.GREEN
+ (
"AI 用户已终止。"
f"原因: {user_response.info['termination_reasons']}."
)
)
break
# 动画效果打印AI用户的响应
print_text_animated(
Fore.BLUE + f"AI 用户:\n\n{user_response.msg.content}\n"
)
# 动画效果打印AI助手的响应
print_text_animated(
Fore.GREEN + "AI 助手:\n\n"
f"{assistant_response.msg.content}\n"
)
# 如果AI用户响应中包含任务完成标志,退出循环
if "CAMEL_TASK_DONE" in user_response.msg.content:
break
input_msg = assistant_response.msg # 更新输入消息为AI助手的响应
if __name__ == "__main__":
main() # 执行主函数


本文来自博客园,作者:老羅,转载请注明原文链接:https://www.cnblogs.com/laoluo2025/p/19246835

浙公网安备 33010602011771号