前言
CAMEL框架旨在通过角色扮演来促进交流代理之间的自主合作,并为其“认知”过程提供洞察。这种方法涉及使用启示式提示来指导聊天代理完成任务,同时保持与人类意图的一致性。这个框架为研究多代理系统的合作行为和能力提供了一种可扩展的方法。其中的场景设计和角色的设置使得大模型的回答更加专业化,更加符合我们的需求。接下来的内容是我对CAMEL课程的一些理解和感悟。
CAMEL框架的实现
- 角色扮演:每个代理都被赋予了一个角色,且每个角色都有清晰的责任和行为准则。比如,Python程序员(助手)的角色是根据股票交易员(用户)的指示提供具体的解决方案,而股票交易员的角色是提供详细的任务指示。这种角色扮演机制有助于模拟人类之间的交互过程,更加真实地完成任务。
- 任务的具体化:为了使AI更好地理解和执行任务,提出了将抽象任务具体化的步骤。这可以帮助AI更清晰地理解任务需求,更准确地给出解决方案。
- 初始提示的设定:为了启动会话并提供合适的引导,系统初始化时会提供两个初始提示,一条是助手角色的提示,另一条是用户角色的提示。这两条提示分别描述了各自角色的行为准则和任务细节,为整个对话过程提供了框架和指引。
- 交互规范:该代码实现中有明确的交互规范,如一次只能给出一个指令,解决方案必须具有详细的解释,使用 “Solution: ” 开始输出解决方案,等等。这些规范有助于保持对话的清晰性和高效性。
具体步骤
1.预设角色和任务提示
这里我们要定义AI助手和用户的角色名称、任务描述以及每次讨论的字数限制。
assistant_role_name = "花店营销专员"
user_role_name = "花店老板"
task = "整理出一个夏季玫瑰之夜的营销活动的策略"
word_limit = 50 # 每次讨论的字数限制
2.任务指定代理
接着我们要使用任务指定代理(Task Specifier)来明确任务描述。
# 定义与指定任务相关的系统提示
task_specifier_sys_msg = SystemMessage(content="你可以让任务更具体。")
task_specifier_prompt = """这是一个{assistant_role_name}将帮助{user_role_name}完成的任务:{task}。
请使其更具体化。请发挥你的创意和想象力。
请用{word_limit}个或更少的词回复具体的任务。不要添加其他任何内容。"""
task_specifier_template = HumanMessagePromptTemplate.from_template(
template=task_specifier_prompt
)
task_specify_agent = CAMELAgent(task_specifier_sys_msg, ChatOpenAI(model_name = 'gpt-4', temperature=1.0))
task_specifier_msg = task_specifier_template.format_messages(
assistant_role_name=assistant_role_name,
user_role_name=user_role_name,
task=task,
word_limit=word_limit,
)[0]
specified_task_msg = task_specify_agent.step(task_specifier_msg)
print(f"Specified task: {specified_task_msg.content}")
specified_task = specified_task_msg.content
3.系统消息模板
然后我们要根据想要大模型回答的格式等来定义系统消息模板,可以为AI助手和AI用户提供初始的提示,确保它们在对话中的行为是有序和一致的。
4.创建 Agent 实例
最后创建助手和用户的CAMELAgent实例,并初始化对话互动,使用CAMELAgent类的实例来模拟助手和用户之间的对话交互。
结语
为了使大模型代理能够更好地为人类服务,我们可以利用CAMEL框架来提高它们的交流能力。 这节课程给了我巨大收获,使得在想要使AI更好满足需求时,会想到可以用CAMEL框架来实现!希望这个CAMEL课程的知识点总结可以对你有帮助!