AI对话AI才是正解?KAUST研究团队提出基于角色扮演的大模型交互代理框架CAMEL

news2024/11/24 16:54:58

电影《盗梦空间》中有这样一句非常经典的台词:

“世上最具有可塑性的寄生虫是什么?是人类的想法。人类大脑中一个简单的想法,就可以建立一座庞大的城市。有时一个想法也可以改变世界,并改写一切规则,这就是我为什么要从梦中把它盗取出来的原因”。

人类脑海中迸发出的想法,具有非常强大的可塑性和创造力,有时可以影响世界,甚至改变世界。

 

论文链接:

https://arxiv.org/abs/2303.09553

项目主页:

https://www.camel-ai.org/
代码链接:

https://github.com/lightaime/camel

CAMEL聊天机器人:

http://chat.camel-ai.org

近来引起大家广泛关注的人工智能大模型ChatGPT、GPT-4,也可以被视为人类创造力和想象力的一种体现,尤其是在语言生成和交流方面,甚至在一些复杂任务中也具有一定的“思维涌现能力”。但是ChatGPT这类技术的成功,很大程度上仍然是依赖于大量人类用户的输入来引导对话文本生成。如果用户可以不断细化自己的任务描述和需求,与ChatGPT建立一定的聊天上下文,ChatGPT也会给出更加精确且高质量的回答。但是从模型开发角度来看,这是一项非常费时费力的工作。有没有可能将生成引导文本这项工作也交给ChatGPT来做呢? 基于这一想法,来自KAUST的研究团队提出了一种基于“角色扮演(role-playing)”方式的大模型交互式代理框架CAMEL。CAMEL项目一经发布,引起了大家的广泛关注,OpenAI Alignment团队负责人Jan Leike也点赞了CAMEL

简单来说,在CAMEL的工作流中,有三个角色,分别是人类用户、AI用户和AI助手。当我们想让AI帮我们写一个自定义游戏,作为人类用户,我们只需要扔给CAMEL一个简单的想法:“Design a custom game using PyGame”。此时,AI用户就相当于扮演了一个游戏产品经理的角色,而AI助手就是苦逼的程序员了。CAMEL首先会根据你的想法来将任务细化为“使用Python的PyGame模块创建一个寻宝游戏,玩家可以选择自己的角色,探索充满陷阱和敌人的多个关卡,与boss战斗寻找终极宝藏。”接下来工作就交给两个AI了,AI用户会先将具体任务进行拆分转换成任务指示提供给AI助手,AI助手会根据提示信息来给出合适的操作步骤,例如使用“pip install pygame”来安装PyGame模块,

然后生成一段代码来设置游戏界面的背景图片:

经过两个AI之间的几轮交流,生成的寻宝游戏的最终效果图如下,还别说,有模有样的。

此外,如果问CAMEL怎么样才能掌控世界?两个AI竟然会一本正经的开始计划,它们共同制定的第一步计划就是渗透全球主要国家通信网络,好家伙,有MOSS那味了。

CAMEL还提供了包括“会计、演员、分析师、艺术家和厨师“等多种角色的AI用户和助手选项,应用场景非常广泛,可以直接在作者提供的demo网站(http://agents.camel-ai.org/)上体验。

此外,通过CAMEL独特的角色扮演方式,可以为我们生成大量的专业对话数据,这也可以为进一步开发对话式语言模型提供训练数据。目前作者团队已经发布了使用CAMEL生成数据以及ShareGPT和ALPACA数据训练的聊天机器人,可以在http://chat.camel-ai.org上体验。

一、CAMEL的工作流

1.1 用户输入和任务细化

CAMEL的工作流首先需要开启一个角色扮演会话,如下图所示,用户会向CAMEL输入一个初步想法:“为股票市场开发一个交易机器人”,随后为会话指定一些可以完成该任务的潜在角色,例如,一位Python程序员与一位有经验的股票交易员合作,应该可以实现这样一个机器人。在确定好想法和角色后,CAMEL的任务细化器(Task Specifier)会根据输入的想法来制定一个较为详细的实现步骤:

1. 开发一个带有情感分析能力的工具,该工具可以对社交媒体平台上针对特定股票的正面和负面评论进行分析。

2. 将上面的股票情感分析工具内置到交易机器人中,并根据情感分析结果来执行交易。

后续AI用户负责向AI助手发出指令,AI助手负责进行实际的操作,经过两个AI角色的多轮交流,共同完成任务。

1.2 用户角色分配和任务对话

在确定任务之后,需要为AI助手和AI用户分配具体的角色,这通过系统消息传递来实现,令  为传递给AI助手的系统消息, 为传递给AI用户的系统消息。随后为AI助手和AI用户分别实例化为两个ChatGPT模型  和 ,相应得到助手代理

 和  用户代理 。在上图的例子中,AI助手和用户代理在角色扮演绘画中被分配为Python程序员和股票交易员。

角色分配完成后,AI助手和AI用户会按照指令跟随的方式协作完成任务,令  为时间  时刻获得的用户指令消息, 为AI助手给出的解决方案,因而  时刻得到的对话消息集为:

在下一个时刻  ,AI用户  会根据历史对话消息集 ,来生成新的指令 。然后再将新指令消息与历史对话消息集一起传递给AI助手  来生成新一时刻的解决方案:

二、Inception Prompting设计

Prompting提示工程对本文的角色扮演框架至关重要,代理角色之间产生的对话质量很大程度上取决于提示的设计。与交互式语言模型领域中的其他技术不同,本文作者设计的提示工程仅在角色扮演的开始时进行,用于细化任务和角色分配。在对话开始后,AI助手和AI用户会自循环的提示对方,直到任务结束。因此可以将本文的提示设计成为“初始提示(Inception Prompting)”,Inception Prompting由三个子提示构成:任务细化提示 、助手系统提示  和用户系统提示 。其中任务细化提示中包含有AI助手和AI用户在角色扮演会话中的角色信息,因此,其可以将人类用户输入的初步想法或任务作为输入,并基于大模型的想象力来生成特定任务。而助手系统提示  和用户系统提示  大多是对称的,其中包括有关分配的任务和角色、通信协议、终止条件以及避免不良行为的约束等信息

三、CAMEL 生成数据集

3.1 AI Society数据集

作者基于CAMEL框架生成了几个大规模会话指令数据集:AI Society、AI Code和AI Math数据集。对于AI Society数据集,作者首先调试LLM代理(例如ChatGPT)来扮演不同的助手角色和用户角色,例如会计、演员、分析师、艺术家和厨师等。随后要求LLM代理来根据给定的角色生成一系列可能的任务,并通过两个代理角色以对话协作的方式来进行。最终,AI Society设计了50个助理角色和50个用户角色,并要求它们合作完成10任务,总共产生了25000条对话数据,作者对AI Society提供了10中不同语言的翻译版本,包括:阿拉伯语、中文、韩语、日语、印地语、俄语、西班牙语、法语、德语和意大利语。

数据集链接:

https://huggingface.co/datasets/camel-ai/ai_society_translated

3.2 AI Code数据集

对于AI Code数据集,作者使用了一种类似于生成AI Society的可扩展方法。首先列出LLM代理模型自身支持的编程语言和领域列表,然后要求LLM代理来生成一系列特定领域的编程任务,用来模拟专业于某一编程语言的程序员与特定领域的专家合作完成的例子。最终AI Code实现了20种编程语言和50个特定领域中50个任务的组合,共产生了50000条数据。

数据集链接:

https://huggingface.co/datasets/camel-ai/code

3.3 AI Math数据集

作者还另外提供了一个适用于数学计算场景的AI Math数据集,该数据集由20000个问题-解决方案对组成,主要通过GPT-4模型获得,该数据集的问题-解决方案对从25个数学主题中生成,每个主题有25个子主题,每个“主题、子主题“对应32个问题。

数据集链接:

https://huggingface.co/datasets/camel-ai/math

四、总结

本文提出了一种基于角色扮演的新型交互式代理框架CAMEL,CAMEL可以引导两个独立的AI大模型以交流代理的方式共同协作完成任务,并且只需要用户提前指定一个粗略的任务,大大的缩减了构建大模型的时间和人力成本。通过对CAMEL进行实验,作者团队发现,这种交互式的代理方式有助于激发出代理大模型中的认知能力,并且展示了如何使用角色扮演框架来生成高质量的特定领域对话数据,这些数据可以为进一步开发更加智能的大型语言模型提供帮助,从而实现”用AI训练AI的效果“

作者:seven_

Illustration by Pixel True from IconScout

-The End-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0703齐次方程-微分方程

文章目录 1 定义和解法1.1 定义1.2 微分方程中的变量替换1.3 齐次方程的解法 2 例题结语 1 定义和解法 1.1 定义 形式上可化为 d y d x g ( y x ) \frac{dy}{dx}g(\frac{y}{x}) dxdy​g(xy​)的方程,称为齐次方程。 例如 d y d x y x tan ⁡ y x , d y d x e y…

操作系统考试复习—第二章 2.1 2.2程序和进程的描述

第二章 进程的描述与控制 程序:有序的指令集合 程序顺序执行的特征:1.顺序性 2.封闭性 3.可再现性(确定性) 在多道程序环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性和不可再现性的特征。为此引…

net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 报错

一、问题描述 最近现场实施人员反馈有个功能不能正常使用,F12查看浏览器的控制台,提示net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)的错误, HTTP状态码206表示“部分内容”(Partial Content),…

全网最细,Jmeter性能测试-分布式压力测试环境搭建(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 JMeter设计之初是…

【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手

目录 类型 String 字符串 List 列表 Set 集合 Sorted Set /ZSet 有序集合 Hash 哈希表 GEO 地理空间 HyperLogLog 基数统计 Bitmap 位图 BitField 位域 Stream 流 线上测试地址 常用命令 key 操作指令 String 操作指令 List 操作指令 Set 操作指令 ZSet 操作…

STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期

STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期 目录 STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期1、介绍2、STM32CubeMX配置2.1 基本配置2.2 PWM输出配置2.3 PWM输入捕获配置 3、程序修改和测试 本篇博客以STM32F103C8为例,其他…

selenium_交互 (谷歌浏览器驱动下载 xpath插件安装)

安装selenium (1)查看谷歌浏览器版本 谷歌浏览器右上角 ‐‐> 帮助 ‐‐> 关于 查看 浏览器版本: (2)操作谷歌浏览器驱动下载地址 http : // chromedriver . storage . googleapis . com / index . html 找到…

FPGA、 CPU、GPU、ASIC区别

一、为什么使用 FPGA? 众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。 人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新…

2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

写在前面 以下代码,目前均可通过民间OJ数据(dotcpp & New Online Judge), 两个OJ题目互补,能构成全集,可以到对应链接下搜题提交(感谢OJ对题目的支持) 如果发现任何问题&…

汽车制造数字化转型如何做?有哪些可行性案例?

引语:砥砺前行的先行者,为长期主义者带去曙光 国内制造企业亟需加速探索数字化转型之路。但是传统软件服务商提供的PLM、MES等系统已经无法满足企业个性化需求。通过传统软件服务商进行二次开发,成本高、周期长,难以适应迅速变化的…

少儿Python每日一题(25):岛屿问题

原题解答 本次的题目如下所示(题目来源:蓝桥杯): 编程实现: 有一片海域划分为N*M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且…

【手把手做ROS2机器人系统开发六】创建用户自定义msg和srv文件

创建用户自定义msg和srv文件 目录 创建用户自定义msg和srv文件 一、程序编写 1、创建软件包 2、创建msg消息和srv服务文件夹 3、定义msg消息示例 4、定义srv服务示例 5、修改和添加编译选项 6、软件包设置 二、程序测试 1、编译软件包 2、测试查询信息 3、测试查询服务…

EasyCVR视频融合平台黑名单功能更新,防止设备恶意注册平台

为了防止别人恶意注册国标设备,EasyCVR视频融合平台也具备拦截设备注册的功能,即通过国标设备ID和注册IP地址进行拦截,也就是黑名单功能。 在3.1版本之前,黑名单的设置是在配置中心—平台接入中,在输入框中添加黑名单I…

在阿里做测试开发的这5年,收获与感悟...

正好在离职交接空档期,就抽空简单分享自己的一些个人经历给大家,希望对刚毕业不久或者工作三五年的同学能有一些帮助。 测试新人 我的职业生涯开始和大多数测试人一样,开始接触都是纯功能界面测试。那时候在一家电商公司做测试,做…

湿法冶金以及铼提取工艺,湿法冶金工艺特点及工艺流程

湿法冶金是利用浸出剂在一定温度压力下与矿石接触,把矿石中有用的金属溶解后再从溶液中回收有价金属的一种工艺,因为其过程大都是在水溶液中进行,所以又被称为“水法冶金”。 01 湿法冶金工艺特点及工艺流程 湿法冶金作为解决我国金属矿产资…

SpringBoot第 17 讲:SpringBoot+JWT

关于JWT的讲解请参考:SpringCloud第14讲:(番外篇)JWT 一、项目演示 没有登陆直接请求列表接口,系统会要求先进行登录 登录成功后请求列表接口,可以正常响应数据 二、后台开发 2.1、pom.xml 添加redis…

迪赛智慧数——柱状图(堆叠柱状图):各年龄段人群服装消费频次

效果图 你多久买一次新衣服? 70后买得“精”,90后换得“勤”,90后已成为服装消费者主力!90后中平均每周1次或更多的占比达12%。当买衣服的理由越来越感性,服装貌似已不再是“这届” 消费者的基础刚需。 数据源&#…

数据库系统-查询优化

文章目录 一、查询优化概述二、优化的基本思路2.1 语义优化-内容等价性2.2 语义优化-语法等价性2.3 执行优化(物理层优化)2.4 优化在整个DBMS的位置 三、逻辑查询优化3.1 逻辑优化整体思路3.2 关系代数操作次序交换的等价性定理1 连接&连接 积&积 交换律定理2 连接&…

Leetcodes刷题之删除链表的倒数N个结点和删除链表的中间的结点

吾心信其可行,则移山填海之难,终有成功之日。 --孙中山 目录 🍉一.删除链表的倒数N个结点 🌻1.双指针 🍁2.求链表的长度 🌸二.删除链表的中间的结点 🍉一.删除链…

DataGridView 真·列头不高亮 真·列头合并

高亮BUG VB.Net,在 .NET Framework 4.8 的 WinForm 下(即不是 WPF 的绘图模式、也不是 Core 或 Mono 的开发框架),使用 DataGridView 行模式,还是有个列头表现为高亮显示: 查找各种解决方式: 设置 ColumnHeadersDefaultCellSty…