1.3HelloCAMEL!


文档摘要

1.3 Hello CAMEL! 让我们使用CAMEL来开发一个交易机器人吧!在这一部分我们会使用到CAMEL的核心模块之一RolePlaying,在后续章节我们会有更进一步的介绍。 : 1.3.1 尝试RolePlaying 根据上面的步骤配置好key和url后,运行脚本 运行效果如下,可以看到模型会自我反复对话来解决问题,这段对话展示了如何为股票市场开发一个交易机器人。 运行成功后,我们也可以看到各个模块的初始prompt,总得来说,RolePlaying会将将初始的task一步步拆解,由AI User指导AI Assistant完成整个任务,这些我们会在第二章详细说明。 如果出现openai.APIConnectionError: Connection error.

1.3 Hello CAMEL!

让我们使用CAMEL来开发一个交易机器人吧!在这一部分我们会使用到CAMEL的核心模块之一RolePlaying,在后续章节我们会有更进一步的介绍。

examples/ai_society/role_playing.py

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, 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 = 0 input_msg = role_play_session.init_chat() while n < chat_turn_limit: n += 1 assistant_response, user_response = role_play_session.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 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.3.1 尝试RolePlaying

根据上面的步骤配置好key和url后,运行脚本

运行效果如下,可以看到模型会自我反复对话来解决问题,这段对话展示了如何为股票市场开发一个交易机器人。

![](https://www.aiknowledge.cn/images/Handy Multi Agent/image-9.webp)

![](https://www.aiknowledge.cn/images/Handy Multi Agent/image-6.webp)

运行成功后,我们也可以看到各个模块的初始prompt,总得来说,RolePlaying会将将初始的task一步步拆解,由AI User指导AI Assistant完成整个任务,这些我们会在第二章详细说明。

如果出现openai.APIConnectionError: Connection error.错误,可以在role_playing.py中加入下列代码,并检查自己的代理。

import os os.environ["http_proxy"] = "http://127.0.0.0:7890"#这里替换成自己的代理IP地址 os.environ["https_proxy"] = "http://127.0.0.0:7890"#这里替换成自己的代理IP地址

代理IP地址可以在你使用的代理中查得,或者在系统设置中查得。以Win11系统为例,在设置 ->网络和Internet ->代理 ->使用代理服务器中可以查询自己的代理IP。

![](https://www.aiknowledge.cn/images/Handy Multi Agent/{0F412F01-E241-4951-BAE0-820EA120D544}.webp)

1.3.2 使用其他模型以及不同的输出语言

我们只需要使用ModelFactory创建一个模型以及修改一些参数即可切换不同的模型,具体可以参考Models章节,另外我们可以设置output_language参数来调整不同的输出语言,关于RolePlaying的其他参数解释可以参考第二章,下面给出一个参考范例:

from colorama import Fore from camel.configs import ZhipuAIConfig from camel.societies import RolePlaying from camel.utils import print_text_animated from camel.models import ModelFactory from camel.types import ModelPlatformType,ModelType # import os # os.environ["http_proxy"] = "http://127.0.0.0:7890"#这里替换成自己的代理IP地址 # os.environ["https_proxy"] = "http://127.0.0.0:7890"#这里替换成自己的AgentIP地址 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='Chinese'#设置输出语言 )

这里的output_language参数其实是通过prompt告诉agent要用什么语言输出的,所以这里的输入可以稍微随意一点,如ZH、中文、Chinese都可以,示例如下:

agent = ChatAgent( system_message="你是一个好奇的智能体,正在探索宇宙的奥秘。", model=model, output_language='中文' ) print(agent.system_message) >>> BaseMessage(role_name='Assistant', role_type=<RoleType.ASSISTANT: 'assistant'>, meta_dict=None, content='你是一个好奇的智能体,正在探索宇宙的奥秘。\nRegardless of the input language, you must output text in 中文.', video_bytes=None, image_list=None, image_detail='auto', video_detail='low', parsed=None)

作者与出处
原作者: Datawhale
来源:Datawhale
许可证:CC BY-NC-SA 4.0
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Datawhale 转发
评论区 (0)
U