本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
可以轻松模拟社会实验的多智能体宇宙来了——
它由清华大学联合北邮、微信团队推出,目前已在GitHub揽获1.1k标星。
名字简单粗暴,就叫“AgentVerse”。
划重点:这个环境专门针对大语言模型开发,也就是智能体们可以运用LLM的能力完成任务。
而只需几行简单配置,你想让智能体们在什么环境出生,就能在什么环境成长。
比如“囚徒困境”:
狱警向两个嫌疑人agent提出一个两难挑战,让他们自己决定是合作互惠还是背叛。
比如“NLP课堂”:
教授通过文字形式授课,学生agent通过有问题时举手、被点名之后方可发言提问的方式,一步步学会知识。
甚至,还能模拟简单的宝可梦游戏…而且还是用户可以直接参与进去的那种:
(通过输入文本进行对话)
要啥有啥,全凭你自己发挥。
作者也表示,这个项目的初衷就是简化大伙儿用LLM构建自定义多智能体环境的过程,让大家能够专注于研究本身。
目前,AgentVerse的论文已经发布,源码也在路上了。
赶紧来瞧瞧。
4个阶段、5大基础组件
正如AgentVerse专为大模型开发,如今人类训练智能体的效果正是在各种LLM的加持下,跟着进步了很多,比如更强的泛化能力。
不过,就和现实世界一样,即使有LLM助力,学会合作也是这些智能体们必须要经历的一件事。
在此,作者提出了多智能体环境构建框架AgentVerse。
它的工作流程模拟了人类合作解决问题的过程,一共分为4个阶段:
1、专家招募(Expert Recruitment)。
根据当前问题解决进度调整由那些agent来处理任务。
2、讨论合作策略(Collaborative Decision)。
由上一阶段招募的agent讨论解决问题所需的分工,需要达成共识。
3、执行(Action Execution)
agent们与环境进行交互,完成任务。
4、评估(Evaluation)
任务完成后,此模块将当前状态与期望目标进行比对,如果没有达到预期就发送反馈奖励重新回到第一步骤。
如开头提到,AgentVerse框架的亮点之一就是可以实现自定义环境配置。
那么如何自定义?
方法是通过5个基础组件。
每一个组件代表的其实是一个规则,组合不同的规则就可以搭建出不同的环境,从而方便研究人员研究不同条件下智能体的行为。
具体来看,这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(可选,如果你需要它提供的各种扩展工具)。
如上准备就绪后:
1、我们可以直接运行他们搭好的例子。
除了开头展示的“囚徒困境”、NLP课堂、宝可梦游戏,还有软件设计场景(1个写代码的agent、1个测试agent、1个审查agent)、数据库管理场景和文本评估场景。
值得注意的是,在NLP课堂这个主题上,作者提供了非常多的环境可选:
除了开头展示的那个可进行提问操作的case,还有可以发起小组讨论、学生在听课时使用必应进行搜索、用WolframAlpha API玩算术游戏等等。
2、自己动手搭一个。
自己动手可以先来一个简单的,比如构建一个只有1名教授、1名学生和1个助教的课堂环境。
首先创建任务目录并配置环境,也就是上面介绍的5个基础组件配置:
然后是配置agent,下面是教授的示例:
可以看到agent类型、名字、所用LLM类型等信息。
最后编写输出解析器,服务gent的响应,比如可以让模型在提示模版中以下格式输出:
以上就是一个简单教室环境的大概流程了。
以看到步骤并不复杂,当然,具体操作还是参阅项目原文。
如果你觉得这种太简单,也可以定制一个更复杂的。但具体教程还没出(据说很快了)。
从作者提前透露的信息来看,大体也还是围绕五个基本组件、环境本身和agent来进行。
另外,AgentVerse未来还会新增一些强大功能,比如支持本地LLM、添加文档等等,可以期待。
One More Thing
在论文中,作者也对AgentVerse环境构建的多智能体协作任务中,agent出现的一些社会行为进行了研究。
这些行为包括:
(1)积极行为,比如在我的世界游戏中,提出和别的agent一起收集甘蔗加快造纸进度,或者帮还没完成毛皮收集的人一起收集;
(2)消极行为,比如从众、搞破坏。
在此,作者也讨论了一些可能的策略,用于复用积极行为、摒弃消极行为,最终提高多智能体间的合作能力。
感兴趣的读者可以进一步查阅论文。
项目地址:https://github.com/OpenBMB/AgentVerse
论文地址:https://arxiv.org/abs/2308.10848