Generative Agents: Interactive Simulacra of Human Behavior翻译 您所在的位置:网站首页 behaveiour翻译 Generative Agents: Interactive Simulacra of Human Behavior翻译

Generative Agents: Interactive Simulacra of Human Behavior翻译

#Generative Agents: Interactive Simulacra of Human Behavior翻译| 来源: 网络整理| 查看: 265

摘要

模仿人类可信行为的智能体可以增强沉浸式环境和仿真环境中交互式应用,以实现人机交流,及原型工具。在本文中,我们引入了生成式智能体,这是一种模仿可信人类行为的计算软件智能体。生成式智能体能够完成起床,煮早餐,上班;艺术绘画,写作;他们会形成意见,注意到彼此并发起对话;他们记得过去几天发生的事,并反馈到第二天的计划中。为了实现生成式智能体,我们描述了一种扩展到大型语言模型的网络结构,以使用自然语言存储智能体完整的经验记录,然后将这些记忆随时间融合到更高级反馈,并动态地检索它们以完成行为的计划。受模拟人生的启发,我们将生成式智能体放置到交互式沙盒环境中,在该环境中,终端用户可以使用自然语言与一个具有25个智能体的小镇进行互动。在评估时,这些生成式智能体会产生可信的个人行为和新出现的社会行为:例如,从一个用户指定的概念开始,即一个智能体想举办情人节聚会,该智能体在接下来的两天中会自主传播邀请函,结识新的熟人,互相询问参加聚会的日期,并协调在正确的时间一起参加聚会。我们通过消融实验证明,我们智能体结构的各个组成部分(观察,计划和反思)都为智能体行为的可信度做出了重要贡献。通过将大型语言模型与计算,交互智能体融合在一起,这项工作引入了新的结构和交互模式,以实现可信的人类行为模拟。

1.介绍

在这里插入图片描述   我们如何制作一个可以反映可信人类行为的交互人类社会?从模拟人生等沙盒游戏到认知模型和虚拟环境等应用,在过去40年,研究人员和从业人员已经设想能作为人类行为的可信代理的计算智能体。在这些愿景中,计算智能体基于其历史经历做出合理的行为,并对环境做出可信的反应。这种对人类行为的模拟可以放置到虚拟空间,并和现实社会现象交流,这可以教人们如何处理罕见但困难的人际交往,测试社会科学理论,为理论和可用性测试建模人类处理器,加速计算应用和社会机器人,并支撑了可以在开放世界中浏览复杂人际关系的游戏角色。   但是,人类行为的空间是巨大且复杂的。尽管大型语言模型取得了惊人的进步,这些模型可以在单个时间点模拟可信的人类行为,但是通过使用能够管理随时间不断增长的记忆(新的交互,冲突,事件,和流逝)的结构,能够确保长期一致的完全通用智能体能够被更好的适应,同时处理多个智能体之间开展的动态社会。这种成功要求一种可以在长期记忆内检索相关事件并交互的方法,反思这些记忆以概括和提炼出更高层次的推理,并将这些推理应用于计划创建和反应,这些计划和反应在当下和较长的时刻对智能体行为都很有意义。   在本文中,我们介绍了生成式智能体,这些智能体基于生成式模型来模拟可信的人类行为,并证明它们对个体和新社会行为都产生了可信的模拟。生成式智能体对自己,其他智能体和环境都能产生了各种各样的推理。他们每天制定能反映其性格和经验的计划,并在适当时做出反应,甚至重新计划;当终端用户更改环境或用自然语言命令他们时,他们会做出回应。例如,当生成式智能体看到早餐燃烧时,他们会关闭炉子;当浴室被占用时,会在外面等待;并在遇到另一个想要交谈的智能体时,停止聊天。一个完全由生成式智能体构建的社会以新的社会动态为特征,在这些社会动态中形成了新的关系,其中信息扩散和协调在整个智能体之间产生。   为了实现生成式智能体,我们描述了一种智能体结构,该结构存储,合成并应用相关记忆以使大语言模型来生成可信行为。我们的架构包括三个主要组成部分。第一个模块是memory stream,这是一个长期记忆的模块,该模块以自然语言记录了智能体经历的全列表。检索模型结合了相关性,新近度和重要性,以实时为智能体提供所需的记录。第二个模块是reflection,它随着时间的推移将记忆合成到更高层次的推理,使智能体能够总结出有关自身和他人的结论,以更好地指导其行为。第三个是planning,将这些结论和当前环境转化为高级行动计划,然后递归分为为行动和反应的详细行为。这些思考和计划被赋予到记忆流中,以影响智能体的未来行为。   该结构从角色扮演和社交,再到虚拟世界和游戏等多个领域中,都可以应用。在社会角色扮演场景(例如面试准备)中,用户可以安全地排练困难、充满冲突的对话。当制定社交平台时,设计师可以超越临时角色,构建随时间的推移而发展的原型动态,以实现复杂的互动。对于本文的目的,受模拟人生等游戏启发,我们专注于创建一个小型,由智能体组成的交互社会的能力。通过将我们的结构与ChatGPT大语言模型联系起来,我们在游戏环境中构建出了二十五个智能体组成的小社会。终端用户可以观察并与这些智能体进行互动。例如,如果终端用户或开发人员希望该镇在游戏中举办情人节派对,那么传统的游戏环境将需要手动编写数十个角色行为的脚本。我们证明,使用生成式智能体,只需告诉一个只能提她想举办聚会就足够了。尽管有许多潜在的失败点 - 聚会的策划者必须记住要告诉其他只能提有关该聚会的信息,并且参加者必须记住邀请,那些记住的智能体必须决定是否出现。他们传播有关聚会的消息,然后出现在聚会中,一个智能体甚至要求另一个智能体告诉其聚会日期,所有这些都来自这个单个用户生成的种子建议。   我们对生成式智能体进行了两项评估:一种可控评估,以测试智能体是否会独立地产生可信的个人行为,以及端到端评估,其中生成式智能体在游戏时间两天内以开放式的方式相互互动,从而了解他们的稳定性和新兴的社会行为。在技术评估中,我们利用一种方法论机会来评估智能体的知识和行为,以自然语言“采访” 智能体,以探测该智能体保持性格,记忆,计划,反应和准确反思的能力。我们比较了几个消融实现,这些实现分别限制了对记忆,反思和计划的访问。我们观察到,这些组件中的每一个对于这些任务中所展现的强劲表现都至关重要。在整个技术和端到端评估中,当智能体未能检索相关记忆,对记忆稍加修饰,或者过度继承来自语言模型的行为时,会产生错误。   总的来说,这篇论文有如下几个贡献:

生成式智能体能模拟人类的可信行为,这些行为是随智能体的经验和环境不断变化的。提出了一种新的结构,使生成式智能体可以记忆,检索和反思,并与其他智能体通过动态不断发展的环境来计划。该结构利用了大语言模型的强大提示功能,并使用该功能来支持智能体的长期一致性,管理动态更新记忆的能力,并递归产生更多的生成。讨论了交互系统中生成式智能体的机遇,道德和社会风险。我们认为,应该调整这些智能体以减轻用户形成有害社会关系的风险,并在设计过程中以补充而不是取代人类的方式进行应用。 2.相关工作

在本节中,我们回顾了人与AI交互的相关文献,并将构建人类行为可信代理的议程纳入其中,该议程尽管在交互、游戏、AI等领域曾被誉为北极星,但由于人类行为的复杂性,一直以来都是一个挑战。我们综合该研究,提出了大语言模型虽然本身不足以构成可信代理,但通过适当的架构,可以为创建可信代理提供新的思路。

2.1 Human-AI Interaction

交互式人工智能系统旨在将人类的见解和能力结合在可以增强用户的计算实体中。一系列工作探索了允许用户和特定模型行为交互的方法。例如,Crayons展示了交互式机器学习的早期版本,其允许非专业用户训练分类器。进一步的工作有助于阐明终端用户如何通过示例和/或演示来向系统描述其分类目标。最近的工作将这些探索扩展到了深度学习和基于提示的写作。   同时,一个持续的研究主题为人机交互(HCI)中的基于语言和智能体的交互提供了研究案例。SHRDLU和ELIZA之类的工作证明了与计算系统通过自然语言进行交互的机会和风险。随着研究的进行,很明显,自主智能体可以提供新的隐喻来实现委托和交互,但是人类和智能体之间的交互线路仍在继续进行辩论和完善。最近,这项技术已经变得足够稳定,以至于智能体可以通过自然语言在大型且复杂的在线社交环境中进行交互(例如[54])。自然语言交互提供了一种新的方式,可以在诸如照片编辑和代码编辑之类的领域中扩展非专业用户的能力。   我们调研了这些工作,以表明我们现在可以在交互系统中创建能代理人类行为的智能体,并通过自然语言与它们互动。在这样做的过程中,这项工作重新打开了围绕认知模型(例如GOM和KLM),原型工具以及无处不在的计算应用程序的基础HCI问题的大门。

2.2 Believable Proxies of Human Behavior

先前的文献将可信度或可信智能体描述为中央设计和工程目标。可信智能体被设计以提供生活幻觉,并令他们做出决策并按照自己的意愿行事的方式展示现实主义,类似于迪士尼电影中的角色。这些智能体可以像我们所居住的环境一样存在和感知到一个开放世界的环境,并努力以表现出以与用户或其他智能体交互为基础的新兴行为,以成为我们人类行为的可信代理。从历史上看,这些智能体是在智能游戏NPC的背景下开发的。如果可能的话,创建可信行为的NPC,能增强玩家在游戏和互动小说中的体验。但是,更重要的是,游戏世界提供了和现实世界越来越相当的环境,正如Laird和van Lent在2001年所观察到的那样,这些模拟世界为可信智能体的开发人员提供了可访问的测试平台来修正智能体的认知能力,而无需在现实世界中实现机器人技术或从头开始创建模拟环境。   在过去的四十年中,出现了各种创建可信智能体的方法。但是,在实现中,这些方法通常简化了环境或智能体行为的维度,以便于管理。基于规则的方法,例如有限状态机器和行为树,考虑了人类行为的暴力求解方法。它们提供了一种直接的方式来创建简单的智能体,这仍然是当今最主流的方法,甚至可以处理基本的社交互动,如诸如质量效应和模拟人生系列之类的模拟游戏所展示的那样。尽管如此,可以全面解决开放世界中各种可能相互作用的人工脚本是不可能的。这意味着由此产生的智能体行为可能无法完全代表其相互作用的后果,并且不能执行未在脚本中编码过的新行为。另一方面,诸如强化学习之类的基于学习的方法通过让智能体学习其行为来克服手动编写脚本的挑战,并在近年来在诸如星际真霸(AlphaStar)和Dota2(OpenAI Five)的游戏中取得了超人的表现。但是,他们的成功在很大程度上发生在对抗性游戏中,并具有易于定义的学习算法可以优化的奖赏。他们尚未解决在开放世界中创建可信智能体的挑战。   由Newell开创的计算认知结构旨在建立基础架构,以支持一组全面的认知功能,这些认知功能适合于最初版本中可信智能体拥有的所有特性。他们的架构支撑了早期的一些可信智能体。例如,Quakebot-SOAR和ICARUS在第一人射击游戏中生成了NPC,而TacAir-SOAR在空中战斗的训练模拟中生成了飞行员。 这些智能体使用的架构有所不同(Quakebot-和TacAir-SOAR依靠SOAR,而ICARUS则依靠其自身的变化,该变化受SOAR和ACT-R的启发),但他们共享了相同的基本原则。他们保留了短期和长期的记忆,用符号结构填补这些记忆,并以perceive-plan-act周期进行操作,动态感知环境并将其与脚本的动作程序之一相匹配。使用认知结构创建的智能体,目的是泛化到大多数(如果不是全部)开放世界的环境,并在其时间上表现出强大的行为。但是,它们的动作空间仅限于手动编写的程序中所包含的知识,并且他们没有提供一种机制,可以通过该机制来启发智能体寻求新行为。因此,这些智能体主要部署在非开放世界的环境中。   现在,如其原始定义中所述,创建可信智能体仍然是一个开放式问题。许多研究员继续进行探索,认为尽管现有的创建可信智能体的方法可能很麻烦且有限,但它们足以支持现有的游戏玩法和交互。我们的论点是,大型语言模型提供了重新审视这些问题的机会,只要我们可以制定有效的架构以将记忆合成到可信行为。我们在本文中朝着这样的结构迈出了一步。

2.3 Large Language Models and Human Behavior

生成式智能体利用大型语言模型来赋予其行为。关键的观察结果是,大型语言模型对训练数据中表示广泛人类行的文本为进行了编码。如果使用狭义定义的上下文提示,则可以使用模型来产生可信的行为。最近的工作证明了这种方法的有效。例如,社交模拟器使用大型语言模型来生成用户,这些用户被放置到新的社交计算系统以原型来探索新兴的社会形态。这种方法使用一个提示链来生成简短的画像和行为的自然语言描述,并同步到系统中时。其他实证研究已经复制了现有的社会科学研究,政治调查并生成了合成数据。大型语言模型也已用于为用户生成交互式人类行为。例如,在游戏中,这些模型已被用来创建互动小说和文本冒险游戏。凭借其生成和分解动作序列的能力,大型语言模型也已用于规划机器人任务。例如,当提供一个任务时(例如拿起瓶子),该模型被提示将任务分解为较小的动作序列,例如前往瓶子所在的桌子并将其捡起。   我们认为,基于对上述工作的总结,大型语言模型可以成为创建可信智能体的关键要素。现有的文献很大程度上依赖于被认为是使用few-shot提示或思维链提示的一阶模板。这些模板可有效地生成仅与智能体当前环境相关的行为(例如,当给定一个具有门的房间时,机器人应该采取哪些动作来进入房间)。但是,可信智能体不仅需要在其当前环境上进行调节,而且还需要大量的过往经验,这种难以适配到一阶模板(由于基础模型有限的上下文输入)。最近的研究试图通过使用静态知识库和信息检索方式或简单的摘要方式来增强语言模型以超越一阶提示的限制。本文扩展了这些想法,以制作一个智能体结构,该构造可以在每个时刻中动态更新过去的经验,并与智能体当前的上下文和规划混合在一起,这可能会加强或相互矛盾。

3.GENERATIVE AGENT BEHAVIOR AND INTERACTION

为了构建生包含成式智能体的设施,我们将其实例化为简单的沙盒世界中的角色,这让人联想到模拟人生游戏。这个 sprite-based 的沙盒游戏世界被称为Smallville,是一个小镇环境。在本节中,我们介绍了在Smallville中的设施及生成式智能体的交互,并描述了智能体在其中的行为。然后,在第4节中,我们介绍了为这些为设施和交互提供动力的生成式智能体的结构。在第5节中,我们描述了沙盒环境的实现以及智能体如何与沙盒世界的基础引擎进行交互。

3.1 Agent Avatar and Communication

Smallville社区由25个独特智能体组成。每个智能体都由简单的sprite avatar表示。我们撰写了一段自然语言描述的段落,以标识每个智能体的身份,包括其职业和与其他智能体的关系,从而将其作为种子记忆。例如,John Lin 有以下描述: 在这里插入图片描述 将每个分号分割的短语分别输入到智能体的初始记忆中,以作为模拟开始时的记忆。

3.1.1 Inter-Agent Communication

智能体通过他们的动作和世界交互,并通过自然语言彼此交互。在沙盒引擎的每个时刻中,agent都会输出一个自然语言声明,以描述他们当前的动作,例如“Isabella Rodriguez is writing in her journal”,“Isabella Rodriguez is checking her emails”,“Isabella Rodriguez is talking with her family on the phone” 或者 Isabella Rodriguez is getting ready for bed。然后将此声明转化为影响沙盒世界的具体动作。该动作作为一组表情符号显示在沙盒接口上,以在视图中提供了动作的抽象表示。为此,系统采用了一种语言模型,来将动作转化为一组表情符号,具有这些表情符号的语音气泡出现在每个智能体上方。例如,“Isabella Rodriguez is writing in her journal”显示为在这里插入图片描述,而“"Isabella Rodriguez is checking her emails”显示为在这里插入图片描述。可以通过单击智能体头像来访问动作的完整自然语言描述。   智能体以完整的自然语言相互交流。智能体能够感知周围的其他智能体,然后其结构决定了他们是经过还是正在进行对话。其中,智能体 Isabella Rodriguez 和 Tom Moreno 之间关于即将举行的选举之间的对话中间内容为: 在这里插入图片描述

3.1.2 User Controls

运行此模拟的用户可以通过对话与智能体进行通信,或者以“内部语音”的形式向智能体发出指令,从而引导模拟和干预。   用户通过自然语言与智能体进行交流,并指定智能体为某个的角色。例如,如果用户指定他们是新闻“记者”,并询问即将举行的选举“Who is running for office?”,则John会回答: 在这里插入图片描述   为了直接指挥智能体,用户作为智能体“内部语音”的角色 - 这使得智能体更有可能将声明视为指令。例如,当用户以John的内在声音为“You are going to run against Sam in the upcoming election”时,约翰决定参加选举,并与妻子和儿子分享他的候选人资格。

3.2 Environmental Interaction

在这里插入图片描述   Smallville包含一个小村庄的常见设施,包括咖啡馆,酒吧,公园,学校,宿舍,房屋和商店。它还定义了使这些空间起作用的子区域和物体,例如房屋中的厨房和厨房中的炉子(图2)。用作智能体主要居住区的所有空间都设有床,桌子,壁橱,架子以及浴室和厨房。   在一个简单的视频游戏中,智能体沿着Smallville移动,进入和离开建筑物,浏览其地图并接近其他智能体。智能体的动作由智能体结构和沙盒游戏引擎指导:当模型规定智能体移到指定位置时,我们计算出Smallville环境中到达目的地的步行路径,然后智能体开始移动。 此外,用户同样可以进入Smallville的沙盒世界,扮演一个智能体并操控它。用户操控的智能体可以是这个世界已经存在的一个,例如Isabella和John,也可以是在Smallville没有任何历史的外部访客。Smallville的居民将不会区分对待用户控制的智能体。他们认识到它的存在,启动交互并记住其行为,然后形成有关意见。   用户和智能体可以影响该世界中目标的状态,就像在模拟人生中一样。例如,当智能体睡觉时,可以占用床,当智能体消耗成分制作早餐时,冰箱可以变空。终端用户还可以通过自然语言重写周围的目标状态来重塑Smallville的环境。例如,当Isabella早上做早餐时,用户可以通过将命令输入到选择了目标的系统并说明其新状态,从而将厨房炉子的状态从“打开”更改为“燃烧”,例如:“ is burning.”。Isabella将在下一刻注意到这一点,然后关闭炉子并重新制作早餐。同样,如果用户将Isabella淋浴的状态设置为“漏水”,她会从客厅里收集工具,并尝试修复。

3.3 Example “Day in the Life”

在这里插入图片描述   从单段落描述开始,智能体开始规划他们的生活。随着在沙盒世界中时间的流逝,这些智能体会和其他智能体或者世界互动,建立记忆和人际关系,并联合协调活动,同事行为也在不断发展。   我们通过在一天中追踪 John Lin智能体对应系统的输出来证明智能体的行为(图3)。在Lin的家中,John是第一个在上午7点醒来的人。他刷牙,洗澡,穿衣服,吃早餐,并在客厅的餐桌上检查新闻。上午8点,Eddy也是如此,起床为他的课做准备。他正要出去时碰上了John: 在这里插入图片描述   Eddy出发后不久,Mei醒来并加入了John。梅问她的儿子,然后John回忆起他们刚才的谈话: 在这里插入图片描述   当他们结束对话时,Mei和John收拾出门。Mei继续在她的研究论文中进行教学和工作,而John在上午9点之前在Willow Market和Pharmacy开设了药房柜台。

3.4 Emergent Social Behaviors

通过相互互动,在Smallville的生成式智能体交换信息,形成新的关系并联合活动。我们扩展先前的工作,这些社会行为是新出现的,而不是预先编程的。

3.4.1 Information Diffusion

当智能体互相注意到,他们可能会进行对话 - 当他们这样做时,信息可以从一个智能体传播到另一个智能体。例如,在杂货店的Sam和Tom之间的对话中,Sam告诉Tom他在当地选举中的候选人资格: 在这里插入图片描述 在这里插入图片描述   当天晚些时候,Sam离开后,Tom和从另一个消息源听到了这个消息的John,开始讨论了Sam赢得选举的机会: 在这里插入图片描述 在这里插入图片描述   逐渐地,Sam的候选人资格成为该镇的话题,有些人支持他,而其他人不确定。

3.4.2 Relationship memory

随着时间的推移,Smallville的智能体形成了新的关系,并记住他们与其他智能体的互动。例如,Sam一开始就不知道Latoya Williams。在约翰逊公园散步时,Sam遇到了Latoya,他们介绍了自己,然后Latoya提到她正在从事一个摄影项目:“I’m here to take some photos for a project I’m working on.”。在后来的互动中,Sam与Latoya的互动表明了这种互动的记忆,正如他问:“Hi, Latoya. How is your project going?”,她回答说:“Hi, Sam. It’s going well!”。

3.4.3 Coordination

在这里插入图片描述

4.GENERATIVE AGENT ARCHITECTURE

在这里插入图片描述   生成式智能体旨在为开放世界提供行为框架:一个可以与其他智能体进行互动并可以对环境变化做出反应的框架。生成式智能体以其当前的环境和过去的经验作为输入,并将行为作为输出。这种行为的基础是一种新的智能体结构,它将大型语言模型与合成和检索相关信息的机制相结合,以调节语言模型的输出。没有这些机制,大型语言模型也可以输出行为,但是由此产生的智能体可能不会根据其过去经验做出反应,可能不会做出重要的推论,并且可能无法保持长期连贯性。长期计划和连贯性的挑战仍然存在于当今最优性能的模型,例如GPT-4。由于生成式智能体会产生大量的事件和记忆,因此我们架构的核心挑战是确保在需要时检索和合成智能体记忆中最相关的部分。   在我们结构的核心是记忆流,这是一个数据库,该数据库保存了智能体所经历的全部记录。从记忆流中,与规划智能体行为和反应环境相关的记录被检索,并将记录递归合成为用于指导行为的高级和更高级别的观察结果。架构中的所有内容均被记录并推理为自然语言描述,从而使结构能够利用大型语言模型。   我们当前的实现利用GPT3.5-Turbo版本的ChatGPT。我们期望生成式智能体的结构基础(记忆,规则和反思)与语言模型相同。较新的语言模型(例如,GPT-4)将继续扩大生成式智能体的表达和性能。但是,在写本篇论文时,GPT-4的API仍然需要邀请,因此我们的智能体使用ChatGPT。

4.1 Memory and Retrieval

在这里插入图片描述

4.1.1 Challenge

创建可以模拟人类行为的生成式智能体需要对一组经验集合进行推理,这些经验远长于提示的描述,由于完整的记忆流会分散模型注意力,并且目前只支持有限的上下文窗口。考虑一个Isabella智能体回答“What are you passionate about these days?”的问题。首先总结了Isabella在语言模型的有限上下文窗口中,使用所有经验会产生信息不全的响应,其中Isabella讨论了诸如事件,项目的协作以及咖啡馆中的清洁度和组织等主题。与总结不同,记忆流描述了更相关的记忆,从而产生了更有信息,更具体的回应,提到Isabella对使人们感到受欢迎并包括在内的热情,计划活动并营造人们可以享受的气氛,例如情人节派对 。

4.1.2 Approach

记忆流保存了智能体的全部记忆。它是由记忆对象构建的列表,每个对象都包含自然语言描述,创建的时间戳和最近访问的时间戳。记忆流的最基本元素是一个观测结果,它是智能体直接感知的事件。常见的观测包括由智能体本身执行的行为,或者其他智能体或非智能体目标执行的行为。例如,在一家咖啡店工作的Isabella Rodriguez可能会随着时间的流逝而产生以下观察结果:(1)Isabella Rodriguez is setting out the pastries,(2)Maria Lopez is studying for a Chemistry test while drinking coffee,(3)Isabella Rodriguez and Maria Lopez are conversing about planning a Valentine’s day party at Hobbs Cafe,(4)The refrigerator is empty。   我们的结构实现了一个检索功能,该功能将智能体当前的情况作为输入,并返回记忆流的子集从而传给语言模型。检索功能有许多可能的实现,具体取决于智能体在决定采取行动时需要考虑的重要方面。在我们的背景下,我们专注于能共同产生有效结果的三个主要组成部分。   Recency。Recency为最近访问的记忆对象分配了更高的分数,因此不久前或今天早晨的事件可能会保留在智能体的注意中。在我们的实现中,我们将recency视为距上次记忆被检索以来的随沙盒游戏时间指数衰减的函数。我们的衰减因子为0.99。   Importance。Importance通过为智能体将那些认为重要的记忆对象分配更高的分数来区分普通记忆。例如,在房间里吃早餐等平凡的事件将产生较低的重要性得分,而与其他人的分手显然会产生很高的分数。同样有许多方法来实现重要性得分;我们发现,直接要求语言模型输出整数得分是可行的。完整提示如下: 在这里插入图片描述 该提示为“cleaning up the room”返回的整数值为2,而“asking your crush out on a date”为8。然后在创建记忆对象时生成对应的重要性分数。   Relevance。Relevance将更高的分数分配给与当前情况相关的记忆对象。什么是相关的取决于“Relevant to what?”的答案,因此我们将query记忆作为相关性的条件。例如,如果query是一个学生正在与同学讨论进行化学测试的研究,那么关于早餐的记忆对象应该具有较低的相关性,而有关教师和学业的记忆对象应该具有很高的相关性。在我们的实现中,我们使用语言模型来生成每个记忆文本描述的嵌入向量。然后,我们将相关性得分计算为记忆嵌入向量与query嵌入向量之间的余弦相似度。   为了计算最终检索分数,我们将Recency,Importance和Relevance得分通过min-max方法归一化到 [ 0 , 1 ] [0,1] [0,1]的范围。检索函数将每一个记忆对象的三个分数进行加权组合来评估: s c o r e = α r e c e n c y ⋅ r e c e n c y + α r e l e v a n c e ⋅ r e l e v a n c e score=\alpha_{recency}\cdot recency+\alpha_{relevance}\cdot relevance score=αrecency​⋅recency+αrelevance​⋅relevance。再我们的实现中,所有的 α \alpha α都设置为1。然后,我们将满足语言模型上下文窗口的top-rank个记忆包含在提示中。

4.2 Reflection

在这里插入图片描述

4.2.1 Challenge

生成式智能体如果仅配备了原始的观测记忆,是难以进行推断的。考虑一个场景,用户询问Klaus Mueller:“If you had to choose one person of those you know to spend an hour with, who would it be?”。当仅访问观测记忆时,该智能体仅选择和Klaus最频繁交互的大学邻居Wolfgang。不幸的是,Wolfgang和Klaus只有在过去彼此见过面,而且没有更深的交互。更理想的回应要求智能体回忆Klaus花费数小时在一个研究项目上,以产生更高的水平反思,即Klaus对研究充满热情,并同样认识到Maria也是如此(尽管在另一个领域),从而使他们能够具有共同的利益。当Klaus被要求与谁共度时光时,Klaus选择Maria而不是Wolfgang。

4.2.2 Approach

我们引入了第二种类型的记忆,我们称之为reflection。反思是智能体产生的更高级别,更抽象的思想。由于它们是一种记忆类型,因此在检索发生时同样与其他观测结果一起参与检索。反思是定期产生的,在我们的实现中,当智能体所感知到的最新事件的重要性总和超过一定阈值时,将会产生反思。实际上,我们的智能体每天大约反思两次或三次。   反思的第一步是,给定智能体最近的经验,通过确定可以被提出的问题来确定要反思的方法。我们在智能体的记忆流中使用100个最新记录来查询大型语言模型(例如,““Klaus Mueller is reading a book on gentrification”,““Klaus Mueller is conversing with a librarian about his research project”,“desk at the library is currently unoccupied”)并提示语言模型:“Given only the information above, what are 3 most salient high-level questions we can answer about the subjects in the statements?” 。模型将产生候选问题:例如,What topic is Klaus Mueller passionate about?以及What is the relationship between Klaus Mueller and Maria Lopez?。我们将这些生成的问题用作检索的query,并为每个问题收集相关记忆(包括其他反思)。然后,我们提示语言模型提取见解,并引用支持见解的特定记录。完整提示如下: 在这里插入图片描述   这个过程产生了诸如Klaus Mueller is dedicated to his research on gentrification (because of 1, 2, 8, 15)之类的陈述。我们在记忆流中解析并将该语句作为反思存储,包括指向被引用的记忆对象的指针。   Reflection不仅可以允许智能体反思观测记忆,还可以可以对其反思进行反思:例如,关于 Klaus Mueller 的第二个陈述是Klaus 对先前记忆的反思,而不是从他的环境中观察到的。因此,智能体会生成了一颗反思树:树的叶子节点代表基本观测值,而非叶子节点代表了反思,更高级别的节点代表更抽象的反思。

4.3 Planning and Reacting 4.3.1 Challenge

尽管大型语言模型可以产生合理的行为来响应当前环境信息,但智能体需要在更长的时间范围内进行计划,以确保其动作顺序连贯且可信。如果我们使用Klaus背景来提示语言模型,同时描述当前时间,并询问他在给定时刻应该采取什么行动,Klaus会在12点吃午餐,但同样在12:30 pm和1 pm上生成吃午餐的动作。对当前时刻可信度的优化会牺牲随时间而变化的可信度。为了克服这个问题,计划至关重要。 通过下面描述的方法,Klaus的下午计划不再是吃饭:下午12点,他在Hobbs Cafe吃午餐同时读书,下午1点在学校图书馆的研究论文,并在下午3点在公园休息一下。

4.3.2 Approach

计划描述了智能体未来的动作序列,并有助于使智能体的行为随着时间的流逝而保持一致。一个计划包括一个位置,起始时间和持续时间。例如,Klaus Mueller 致力于研究,并且即将到来的截止日期,他可能会选择在桌子上工作,起草他的研究论文。例如,计划中的一项是:for 180 minutes from 9am, February 12th, 2023, at Oak Hill College Dorm: Klaus Mueller’s room: desk, read and take notes for research paper。像反思一样,计划存储在记忆流中,并包含在检索过程中。这使智能体在决定如何行动时可以同时考虑观察,反思和计划。如果需要,智能体可能会在中途更改计划。   对于艺术家智能体在工作室坐了四个小时而没有移动时,计划绘画是不现实且无趣的。更理想的计划将是智能体花时间在其家庭工作室的这四个小时内收集材料,混合涂料,休息和清理。为了创建这样的计划,我们的方法自上而下开始,然后递归生成更多细节。第一步是制定一项计划,以较大范围列出当天的议程。为了创建初始计划,我们使用智能体的摘要描述(例如,名称,特征和他们最近经历的摘要)和前一天的摘要来提示语言模型。一个完整的提示示例如下: 在这里插入图片描述 在这里插入图片描述   这产生了智能体一天计划的粗略草图,分为五到八个块:“1) wake up and complete the morning routine at 8:00 am, 2) go to Oak Hill College to take classes starting 10:00 am, [. . . ] 5) work on his new music composition from 1:00 pm to 5:00 pm, 6) have dinner at 5:30 pm, 7) finish school assignments and go to bed by 11:00 pm.”   智能体将该计划保存在记忆流中,然后递归地分解它以创建更细粒度的动作,即一个小时一块,Eddy的计划从work on his new music composition from 1:00 pm to 5:00 pm变为1:00 pm: start by brainstorming some ideas for his music composition […] 4:00 pm: take a quick break and recharge his creative energy before reviewing and polishing his composition。我们再将这个计划递归解耦到5-15分钟一块,例如4:00 pm: grab a light snack, such as a piece of fruit, a granola bar, or some nuts. 4:05 pm: take a short walk around his workspace […] 4:50 pm: take a few minutes to clean up his workspace。这一过程可以调整来匹配目标粒度。

4.3.3 Reacting and Updating Plans

生成式智能体在动作循环中运行,在每个时刻,他们都会感知周围的世界,而这些感知的观察结果存储在其记忆流中。我们使用这些观察结果提示语言模型,以决定智能体是否应继续执行其现有计划或做出响应。例如,站在画架旁并绘画可能会触发对画架的观察,但这不太可能引起响应。但是,如果Eddy的父亲John记录了他看到Eddy在房屋花园短途散步,那么结果就不同了。提示如下,使用[Agent’s Summary Description] 表示一个动态生成的,智能体总体目标和性格摘要,该摘要在附录A中进行了描述: 在这里插入图片描述   上下文摘要是通过两个提示生成的,这些提示通过下面query检索记忆“What is [observer]’s relationship with the [observed entity]?” 和“ [Observed entity] is [action status of the observed entity]”,然后他们的答案被总结在一起。最终输出为John could consider asking Eddy about his music composition project。然后,我们从反应发生的时候开始重新生成智能体的现有计划。最后,如果该动作表明智能体之间的相互作用,我们将产生他们的对话。

4.3.4 Dialogue

智能体相互交互时产生对话。我们通过在彼此的记忆中调节他们的话语来产生智能体的对话。例如,当John与 Eddy发起对话时,我们通过使用John的记忆摘要来生成其第一个话语,并当他决定向Eddy询问他的作品项目时,他的反应是: 在这里插入图片描述   结果是:“Hey Eddy, how’s the music composition project for your class coming along?”。从Eddy的角度来看,John发起对话被视为他可能想反应的事件。 因此,就像John所做的那样,Eddy检索并总结了他与约翰关系的记忆,以及记忆中可能与John对话中的最后一句话有关的内容。如果他决定做出回应,我们会使用他的总结记忆和当前的对话历史来产生Eddy的话语: 在这里插入图片描述   这产生了Eddy的回答:“Hey Dad, it’s going well. I’ve been taking walks around the garden to clear my head and get some inspiration.”。这种对话的延续是使用相同的机制生成的,直到两个智能体之一决定结束对话。

5.SANDBOX ENVIRONMENT IMPLEMENTATION

Smallville沙盒游戏环境是使用Phaser网络游戏开发框架构建的。视觉环境精灵(包括智能体的化身)以及我们撰写的环境地图和碰撞图被导入到Phaser中。   我们使用一个服务器来补充沙盒开发框架,该服务器使沙盒信息可用于生成智能体,并使生成式智能体可以移动和影响沙盒环境。该服务器维护了一个JSON数据结构,该结构包含每个智能体在关沙盒世界中的信息,包括其当前位置,对当前操作的描述以及与之交互的沙盒对象。在沙盒环境的每个时刻,沙盒服务器都会解析JSON,查看来自生成式智能体的任何更改,使生成式智能体移至其新位置,并更新代智能体正在与之交互的任何沙盒对象的状态(例如,如果一个智能体的动作为“making espresso for a customer @ Hobbs Cafe: counter: coffee machine”,则咖啡机的状态从 “idle”变为“brewing coffee”)。沙盒服务器还负责将每个智能体的预设视觉范围内的所有智能体和对象发送到该智能体的记忆,以便智能体可以做出适当的反应。然后,智能体的输出操作更新JSON,以及下一个时刻的过程循环。   终端用户用简短的自然语言描述初始化了一个新智能体,如第3.1节中有关Jon Lin的段落。在我们的实现中,我们按分号将特征分为一组记忆列表。这些是决定智能体行为的最初记忆。这些记忆是初始起点:随着智能体在沙盒世界中获得更多经验,并且随着越来越多的记录使记忆流饱和,智能体的摘要和行为将不断发展。

5.1 From Structured World Environments to Natural Language, And Back Again

生成式智能体的结构使用自然语言操作。因此,我们需要一种机制来来基于沙盒世界来进行智能体的推理。为了实现这一目标,我们将沙盒环境(区域和目标)作为树结构表示,树的边表示沙盒世界中的包含关系。我们将这棵树转换为自然语言,以传递给生成式智能体。例如,“stove”是“kitchen”的子节点转换为“there is a stove in the kitchen”。   智能体在浏览环境时建立了单课树,即整个沙盒环境树的子图。我们用一个环境树初始化每个智能体,该环境树捕获了智能体经历过的空间和物体吗,这包括生活区中的房间和物体,工作场所以及通常访问的商店和超市。当智能体在沙盒世界中导航时,他们更新了这棵树以反映新感知的区域。智能体不是无所不知的:他们的树在离开区域时可能会过时,并且在重新进入该区域时会更新。   为了确定每个动作的适当位置,我们将遍历智能体存储的环境树,并将其中的一部分变成自然语言,以提示语言模型。从智能体环境树的根节点开始,我们提示该模型找到最合适的区域。例如,如果Eddy的智能体表示他应该围绕其工作空间步行一小段路程: 在这里插入图片描述 在这里插入图片描述   这输出了 Lin family’s house。然后,我们递归地使用相同的过程来确定所选区域内最合适的子区域,直到到达智能体环境树的叶子节点为止。在上面的示例中,此遍历的结果是The Lin family’s house: garden: house garden。最后,我们使用传统的游戏路径算法来对智能体的动作进行模拟,以便它传输到叶子节点指示的位置。   当智能体在对象上执行操作时,我们提示语言模型询问对象状态会发生什么。例如,如果Isabella的生成式智能体输出“making espresso for a customer”的动作,则对语言模型的查询表明,Hobbs Cafe中咖啡机的状态应从“Off”变为“brewing coffee”。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有