CAMEL:基于“角色扮演”的合作型通信代理框架
简介
聊天式语言模型的快速发展在解决复杂任务方面取得了显著进展。然而,它们仍然很大程度上依赖于人类输入来引导对话朝着正确的方向前进。这种依赖使用户必须根据自己的意图和聊天代理的反馈提供相关且准确的提示。创建有效的提示往往需要对特定领域的知识有深入的理解和专业知识。这可能是具有挑战性、耗时的,并且有时是不可能的。例如一个缺乏交易经验的人,很难指导聊天代理开发一个完整的交易应用程序。
因此,想要走出这个困境需要我们解决这样一个问题:我们能否用一个能够自主引导对话朝着完成任务的方向发展的通信代理来取代人类干预?
当使用多个代理进行自主合作以完成任务时,会出现角色偏离、重复说明、敷衍回答以及消息无限循环等常见问题。因此,重点在于研究这些模型与人类意图对齐的方法,并探索使代理有效合作的手段。为了解决这些问题,CAMEL 提出了一个基于“角色扮演”的新型合作代理框架,用于自动化通信代理之间的合作。该框架使用带有“初始提示”的角色扮演来自动引导通信代理完成任务,只需要人类提供一个初步的想法,就可以引导对话朝着解决复杂任务的方向发展。
下面将详细介绍 CAMEL 的两个创新点:
角色扮演框架
在多代理系统接收到来自人类用户的大致想法后,任务指定者代理将提供详细的描述以使该想法具体化。然后,AI 助手和AI 用户将通过多轮对话合作完成指定的任务,直到AI用户确定任务已完成。AI 用户负责向AI 助手发出指令,并引导对话朝着完成任务的方向发展。另一方面,AI 助手旨在遵循来自AI用户的指令并用具体的解决方案做出回应。
该框架可以分为四部分:
人类输入和任务指定:角色扮演会话将从一个想法和由人选择的角色来实例化。例如,在上图中,一个人有一个初步的想法开发一个股票交易机器人。人类可能不知道这个想法如何实现。只需要指定潜在的角色来实施这个想法。例如,Python 程序员可以与股票交易者合作,以实现为股票市场开发交易机器人的想法。在想法和角色确定后,任务指定代理将根据输入的想法帮助AI 用户代理完成具体任务。在这种情况下,一个实例可能是:使用情感分析工具开发一个交易机器人,该机器人可以在社交媒体平台上监测有关特定股票的正面或负面评论,并根据情感分析结果进行交易。引入任务指定的主要动机是代理通常需要具体的任务提示才能实现最终目标。因此,任务指定代理充当了对想法实现的增强想象模块。
AI 助手-用户角色分配:在任务说明之后,系统会向每个代理发送一条消息来宣布他们的角色。例如,AI 助手和AI 用户被分配了 Python 程序员和股票交易者的角色。AI 用户充当任务规划者,参与交互式规划以确定AI 助手可以执行的可行步骤。与此同时,AI 助手充当任务执行者,提供解决方案、执行计划的步骤并为AI 用户提供响应。
对话式任务求解:在角色指派完成后,AI 助手与AI 用户将以指令遵循的方式合作完成任务。
在循环中添加评论:为了提高角色扮演框架的可控性,该方法还引入了一个能够提供反馈的建议者代理。这使得任务解决具有类似树搜索的决策能力。实际上,建议者代理可以是AI(GPT-4)或人类。
初始提示
CAMEL 中的提示工程只在角色扮演开始时进行,用于任务说明和角色分配。一旦对话阶段开始,AI 助手和AI 用户会在循环中自动向彼此发送提示,直到结束为止。因此,该方法被称为“Inception Prompt”(初始提示)。初始提示由三部分组成:任务指定器提示、助手系统提示和用户系统提示。例如,一个人工智能社会角色扮演模板如上图所示。任务指定器提示包含有关角色扮演会话中的AI 助手和AI 用户的任务信息。因此,任务指定器代理可以接受一个初步的任务/想法作为输入,并使用想象力生成一个特定的任务。AI 助手系统提示和AI 用户系统提示大多是相互对称的,包括分配的任务和角色的信息、通信协议、终止条件以及避免不希望的行为的约束或要求。
顺便提一句,CAMEL 作为较早一批多智能体项目,也启发了后续的ChatDev、MetaGPT等多智能体开源框架,像ChatDev的聊天链中子任务的完成就是使用了初始提示机制来启动、维持和结束代理的通信,以保证稳健高效的工作流程。
实验
针对不同的代理协作场景,使用 CAMEL 得出的解决方案在 GPT4 和人类评估中都优于通过 gpt-3.5-turbo 一步到位生成的解决方案。
同时记录代理间的对话进行行为分析和能力理解,构建面向任务、遵循指令的单轮/多轮对话数据集,也能够用于模型微调,促使模型知识的涌现。
CAMEL 开源库(https://github.com/camel-ai/camel)也包括了各种代理的实现、数据生成管道、数据分析工具以及收集的数据集,以支持对通信代理和其他相关研究。