清华智能体宇宙火了,AI模拟“囚徒困境”等实验只需几行简单配置

2023-10-27

丰色 发自 凹非寺
量子位 | 公众号 QbitAI

可以轻松模拟社会实验的多智能体宇宙来了——

它由清华大学联合北邮、微信团队推出,目前已在GitHub揽获1.1k标星。

01b984085fdcdd5429c1fb10079d456b.png

名字简单粗暴,就叫“AgentVerse”。

划重点:这个环境专门针对大语言模型开发,也就是智能体们可以运用LLM的能力完成任务。

只需几行简单配置,你想让智能体们在什么环境出生,就能在什么环境成长。

比如“囚徒困境”

狱警向两个嫌疑人agent提出一个两难挑战,让他们自己决定是合作互惠还是背叛。

2e42e6a203f6ed6ca2402be5a83e5457.gif

比如“NLP课堂”

教授通过文字形式授课,学生agent通过有问题时举手、被点名之后方可发言提问的方式,一步步学会知识。

48a9936a48613f2e1585c2cc47faa0d7.gif

甚至,还能模拟简单的宝可梦游戏…而且还是用户可以直接参与进去的那种:

(通过输入文本进行对话)

d10e0343a440883d801cae41ba3e6243.gif

要啥有啥,全凭你自己发挥。

0999a36adb621b991aa29cc866d4e98d.png

作者也表示,这个项目的初衷就是简化大伙儿用LLM构建自定义多智能体环境的过程,让大家能够专注于研究本身。

目前,AgentVerse的论文已经发布,源码也在路上了。

54a103252747f4da8932bca0641a186b.png

赶紧来瞧瞧。

4个阶段、5大基础组件

正如AgentVerse专为大模型开发,如今人类训练智能体的效果正是在各种LLM的加持下,跟着进步了很多,比如更强的泛化能力。

不过,就和现实世界一样,即使有LLM助力,学会合作也是这些智能体们必须要经历的一件事。

在此,作者提出了多智能体环境构建框架AgentVerse。

它的工作流程模拟了人类合作解决问题的过程,一共分为4个阶段:

1、专家招募(Expert Recruitment)。

根据当前问题解决进度调整由那些agent来处理任务。

2、讨论合作策略(Collaborative Decision)。

由上一阶段招募的agent讨论解决问题所需的分工,需要达成共识。

3、执行(Action Execution)

agent们与环境进行交互,完成任务。

4、评估(Evaluation)

任务完成后,此模块将当前状态与期望目标进行比对,如果没有达到预期就发送反馈奖励重新回到第一步骤。

6e4ade2f2feff642ca02db66116add2f.png

如开头提到,AgentVerse框架的亮点之一就是可以实现自定义环境配置

那么如何自定义?

方法是通过5个基础组件。

每一个组件代表的其实是一个规则,组合不同的规则就可以搭建出不同的环境,从而方便研究人员研究不同条件下智能体的行为。

65baa771a76a5091fb19697119930323.png

具体来看,这5个组件分别是:

  • 描述器(Describer),它为每个agent提供每次环境的描述。通过自定义该组件,你就能根据你自己的特定要求来构建环境。

  • 顺序(Order),它定义agent在环境中采取操作的顺序,可以采用几个默认选项,比如random(随机)、sequential(按顺序)和concurrent(所有agent在每个回合中都采取行动),也可以自定义。

  • 选择器(Selector),有时agent会生成一些无效信息,它就用于过滤这些信息,选择有效内容。

  • 更新器(Updater),用于更新每个agent的内存。这是因为有时某个agent的响应不应被所有agent看到(比如不在一个房间),它的作用就是在每个响应发生后,仅更新每个agent应看到内容。

  • Visibility(可见性),用于维护agent列表,每当有agent移动到另一个房间或者产生其他变化时,它会向所有agent更新列表。

除了这5个基础组件,AgentVerse还有一个非常基础的元素:agent。

目前,系统提供两种类型:一个是ConversationAgent,一个是ToolAgent,含义如其名。

当然,通过继承BaseAgent类我们还能定制第三种,以及更多类型代理。

如何配置?

手动clone或者pip命令即可安装AgentVerse。

需要注意的是,得准备一个OpenAI API密钥,以及安装BMTools(可选,如果你需要它提供的各种扩展工具)。

58af2241e5c2b88cf2d2f59de61dcd3f.png

如上准备就绪后:
1、我们可以直接运行他们搭好的例子。

除了开头展示的“囚徒困境”、NLP课堂、宝可梦游戏,还有软件设计场景(1个写代码的agent、1个测试agent、1个审查agent)、数据库管理场景和文本评估场景。

c4996675193a93ebb08efbc1179086f5.gif

值得注意的是,在NLP课堂这个主题上,作者提供了非常多的环境可选:

除了开头展示的那个可进行提问操作的case,还有可以发起小组讨论、学生在听课时使用必应进行搜索、用WolframAlpha API玩算术游戏等等。

2、自己动手搭一个。

自己动手可以先来一个简单的,比如构建一个只有1名教授、1名学生和1个助教的课堂环境。

首先创建任务目录并配置环境,也就是上面介绍的5个基础组件配置:

889c0613f0955c0a59c98d31be1b0906.png

然后是配置agent,下面是教授的示例:

可以看到agent类型、名字、所用LLM类型等信息。

4d31369f79d10bc4fc03f2a54ec78219.png

最后编写输出解析器,服务gent的响应,比如可以让模型在提示模版中以下格式输出:

7d5431b5653160b114fa97560ef7423a.png

以上就是一个简单教室环境的大概流程了。

以看到步骤并不复杂,当然,具体操作还是参阅项目原文。

如果你觉得这种太简单,也可以定制一个更复杂的。但具体教程还没出(据说很快了)。

从作者提前透露的信息来看,大体也还是围绕五个基本组件、环境本身和agent来进行。

另外,AgentVerse未来还会新增一些强大功能,比如支持本地LLM、添加文档等等,可以期待。

One More Thing

在论文中,作者也对AgentVerse环境构建的多智能体协作任务中,agent出现的一些社会行为进行了研究。

这些行为包括:

(1)积极行为,比如在我的世界游戏中,提出和别的agent一起收集甘蔗加快造纸进度,或者帮还没完成毛皮收集的人一起收集;

d06f52147401a3fda773f22b713b4488.png

(2)消极行为,比如从众、搞破坏。

cfd3f912c2debe49d7842b911a3e3a00.png

在此,作者也讨论了一些可能的策略,用于复用积极行为、摒弃消极行为,最终提高多智能体间的合作能力。

感兴趣的读者可以进一步查阅论文。

项目地址:
https://github.com/OpenBMB/AgentVerse
论文地址:
https://arxiv.org/abs/2308.10848

「量子位智库·大模型人才沙龙」招募中

「量子位智库·大模型人才沙龙」将于9月下旬在北京中关村举办,欢迎大模型各领域玩家参与~

点击图片了解详情,企业报名可联系活动负责人王琳玉(微信:iris_wang17,请备注企业+姓名)。

沙龙观众通道后续开放,敬请期待~

171e345afc7dd6322493753dc613d632.png

点这里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清华智能体宇宙火了,AI模拟“囚徒困境”等实验只需几行简单配置 的相关文章

随机推荐

  • 简单编程:屏幕找图找色找字,自动化操作

    屏幕找字 使用系统自带组件 其实 Windows 10 11 系统自带的一个强大 免费的屏幕图像文字识别组件 调用该组件生成的 EXE 文件体积很小 下面我们用 aardio 编程语言写个例子 代码很简单 先上图看效果 请复制下面的源代码粘
  • 云服务器搭建网站域名要备案吗,域名绑定服务器需要备案吗

    域名绑定服务器需要备案吗 内容精选 换一换 一个网站可以绑定多个域名 注册多个不同的域名 并且将这些域名绑定到同一个网站上 可以让互联网访问者更容易找到该网站 增加网站的推广效果 不过需要注意的是 一个网站绑定多个域名 会分散网站的权重 可
  • 基于Mysql+Vue+Django的协同过滤和内容推荐算法的智能音乐推荐系统——深度学习算法应用(含全部工程源码)+数据集

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 Python 环境 MySQL环境 VUE环境 模块实现 1 数据请求和储存 2 数据处理 计算歌曲 歌手 用户相似度 计算用户推荐集 3 数据存储与后台 4 数据展示 系统测试
  • stm32 pwm输出异常及解决过程

    pwm输出是stm32最常用的外设之一 我比较习惯使用库函数配置 我通常移植做过的工程中的程序的配置代码 然后改一改相应的参数 配置方法也十分简单 即使很简单 但对于初学者有时候还是很容易出错 有时候会一点波形没有输出 在找不到其他原因的情
  • 阿里前端实习电话面(一面)(被捞两次)

    学习前端时长一年半 以下是电话面试阿里前端被问的一些知识点 都是下来回顾的 某一天我接到了阿里的hr电话 约面试时间 我以为阿里和其他公司一样会发邮件给我 所以一直在等 结果我在实验室接到了电话 说今天面试 我说没收到邮件 可以等我半小时
  • RabbitMQ实现延迟消息【死信队列实现、插件实现】

    视频地址 之前一直没使用过RabbitMQ 最近有一个需求需要用到延迟消息 就简单的使用了一下 发现还是有蛮多坑的 此篇文章只是RabbitMQ延迟消息相关内容 至于安装RabbitMQ等其它操作 参考百度 一 什么是延迟消息 顾问思议所谓
  • 详解命令执行漏洞

    详解命令执行漏洞 漏洞描述 漏洞原理 漏洞危害 漏洞产生的原因 命令执行与代码执行的区别 常见的危险函数 命令执行的类型 危险函数利用 system passthru exec shell exec 反引号 escapeshellarg e
  • 心流:最优体验心理学

    心流的成因和特征 注意力 体验过心流的人都知道 那份深沉的快乐是严格的自律 集中注意力换来的 有一个他愿意为之付出的目标 那目标是什么不要紧 只要那目标将他的注意力集中于此 有即时的回馈 因全神贯注于此 日常恼人的琐事被忘却和屏蔽 达到了忘
  • goland插件推荐Rider UI Theme Pack

    推荐一个goland配色插件Rider UI Theme Pack 里面自带visual assist配色 配色截图如下 直接在plugins里面进行搜索或者在插件home page下载后进行安装 然后按照下图进行设置即可 此插件还适用于J
  • LNK 2019 无法解析的外部符号

    原因 你包含了头文件 却没有包含该文件的库文件 lib lib文件 lib是静态数据链接库 在windows中起到链接程序和函数的作用 lib里存放的是函数调用的信息 数据库有静态数据库 lib 和动态数据库 dll 两种 静态编译 个人理
  • 如何重写hashCode()和equals()方法

    转载 http blog csdn net neosmith article details 17068365 hashCode 和equals 方法可以说是Java完全面向对象的一大特色 它为我们的编程提供便利的同时也带来了很多危险 这篇
  • gsoap实现webservice如何发送结构体数组

    头文件中如下定义 struct SRecordArray int size struct SRecord ptr 注意加粗那一行 二维指针前定义一个 size才能正确发送出多个结构体数据 不然只能发出一个
  • Android-P模拟器镜像编译

    0 前言 为模拟器编译镜像和为真机编译有所不同 本文梳理Android P为模拟器编译源码的方法 1 aosp 1 1 aosp arm eng 根据参考资料 1 的方式 编译源码之后 直接执行emulator即可启动模拟器 但会提示 图1
  • IDEA如何将Git回退到某个版本

    网上资料大多是 reset current branch to here 之后 选hard模式 然后强制push的方式 虽然能将本地及远程仓库都恢复到某次提交 但是不会产生commit记录 导致在该分支共同开发的其他人下次提交时 会把你已经
  • Networkx报错 AttributeError: 'NodeView' object has no attribute 'remove'

    错误描述 我用的版本是python2 7 networkx2 2 部分代码 G2是传入的一个随机网络 unsaturated b G2 nodes unsaturated b remove node b 最后一行报错 提示Attribute
  • 虚拟化存储技术

    文章目录 前言 一 HCLA存储技术趋势与智能存储组件 1 HCLA存储技术趋势 1 什么是数据存储 2 数据存储系统 3 数据分类 4 数据存储发展趋势 小结 2 智能存储组件 控制框 硬盘框 级联模块 硬盘 接口模块 二 虚拟化与网络存
  • C++的std::for_each()

    当给定一个容器范围 我们通常需要对其中的每个元素执行相同的操作 这样的操作可能包括打印元素 修改元素的值或应用一个自定义函数等等 在 C 标准库中 std for each 算法函数提供了一种方便的方式来对容器范围内的元素执行指定的操作 s
  • Golang空结构体struct{}的作用是什么?

    文章目录 占位符 通道标识 键集合 内存占用优化 总结 在Go语言中 空结构体 struct 是一种特殊的数据类型 它不占用任何内存空间 空结构体没有任何字段 也没有任何方法 尽管它看起来没有实际的用途 但在编程中确实有一些常见的应用场景
  • Handler dispatch failed; nested exception is java.lang.NoSuchMethodError

    一 问题描述 1 报错 org springframework web util NestedServletException Handler dispatch failed nested exception is java lang No
  • 清华智能体宇宙火了,AI模拟“囚徒困境”等实验只需几行简单配置

    丰色 发自 凹非寺量子位 公众号 QbitAI 可以轻松模拟社会实验的多智能体宇宙来了 它由清华大学联合北邮 微信团队推出 目前已在GitHub揽获1 1k标星 名字简单粗暴 就叫 AgentVerse 划重点 这个环境专门针对大语言模型开
Powered by Hwhale