斯坦福虚拟小镇

avatarwuxiongwei

目录:

斯坦福虚拟小镇

人类的很多想法很多时候都是出奇的一致,LLM被大家熟知之后,很多人应该都会想到用LLM创建智能NPC吧。

这个虚拟小镇就是斯坦福和谷歌的几个大佬根据一个古老的模拟人生沙盒游戏创建的多智能体Agent的一个项目。

能力主要是这几项:观察observation、记忆memory、反思reflection、计划planning

我先帮大家总结一下这篇论文包含的主体内容

虽然是论文,但这篇论文中并没有出现大量的公式,可读性还是很高的,有兴趣的小伙伴可以自己通读。

我会保留章节框架,以方便大家对照原文查看。

文中可能出现对英文混合出现的情况,一来是比较重要的内容我保留了英文单词,二来对话阅读起来并没有那么困难。

1 略

2 相关工作related work

2.1 人和机器的交互

2.2 可信的人类行为模拟

2.3 大模型和人类行为

第二章记住一张图就行

iShot_2024-04-26_17.39.57

就是这样一个世界,这个世界由沙盒构成,类似模拟人生,沙盒内有房子、咖啡馆、停车场等类似人类的社区,每个建筑的内部还有有设计,比如家庭房内会包含淋浴间、厨房、床等。另外最重要的是,这个沙盒内有Agent智能体,可以理解为人工智能NPC(打游戏的应该都懂),另外人类也可以以智能体的身份进入沙盒游戏。

3 生成式智能体行为和交互

3.1 智能体和通信

每个智能体会有一段描述:人物背景、社会关系、性格等,比如

John Lin is a pharmacy shopkeeper at the Willow Market and Pharmacy who loves to help people. He is always looking for ways to make the process of getting medication easier for his customers; John Lin is living with his wife, Mei Lin, who is a college professor, and son, Eddy Lin, who is a student studying music theory; John Lin loves his family very much; John Lin has known the old couple next-door, Sam Moore and Jennifer Moore, for a few years; John Lin thinks Sam Moore is a kind and nice man; John Lin knows his neighbor, Yuriko Yamamoto, well; John Lin knows of his neighbors, Tamara Taylor and Carmen Ortiz, but has not met them before; John Lin and Tom Moreno are colleagues at The Willows Market and Pharmacy; John Lin and Tom Moreno are friends and like to discuss local politics together; John Lin knows the Moreno family somewhat well — the husband Tom Moreno and the wife Jane Moreno.

3.1.1 智能体之间通信

智能体通过它们的行为与世界交互,并通过自然语言与彼此交互。在沙盒引擎的每个时间步,代理输出描述其当前动作的自然语言语句,例如“伊莎贝拉罗德里格斯正在写日记”,“伊莎贝拉罗德里格斯正在检查她的电子邮件”,“伊莎贝拉罗德里格斯正在与她的家人打电话”,或者“伊莎贝拉罗德里格斯正在准备睡觉。”然后,这个语句被转化为影响沙盒世界的具体动作。动作以一组表情符号的形式显示在沙盒界面上,从俯视的角度提供动作的抽象表示。为了实现这一点,系统利用语言模型将动作翻译成一组表情符号,这些表情符号以语音气泡的形式出现在每个角色的头部上方。

智能体之间用完全的自然语言进行交流。它们知道自己所在区域的其他智能体,生成智能体架构决定它们是经过还是参与对话。以下是特工伊莎贝拉罗德里格斯和汤姆莫雷诺关于即将到来的选举的谈话中的一个例子

Isabella: I’m still weighing my options, but I’ve been discussing the election with Sam Moore. What are your thoughts on him? Tom: To be honest, I don’t like Sam Moore. I think he’s out of touch with the community and doesn’t have our best interests at heart.

3.1.2 用户可以化身进入游戏

用户通过自然语言与代理通信,指定代理应该感知到的角色。例如,如果用户指定自己是一名新闻“记者”,并询问即将到来的选举:谁在竞选公职?, John 代理就会回答

John: My friends Yuriko, Tom and I have been talk- ing about the upcoming election and discussing the candidate Sam Moore. We have all agreed to vote for him because we like his platform.

为了直接命令其中一个代理,用户扮演了代理“内心声音”的角色——这使得代理更有可能将该陈述视为指令。例如,当一个用户作

为 John 的内心声音告诉他“你将在即将到来的选举中与山姆竞争”时,John 决定参加选举,并与他的妻子和儿子分享他的候选资格。

3.2 场景设置(互动)

action改变env里object的state

用户和代理可以影响这个世界中物体的状态。例如,当智能体睡觉时,床可以被占用,当智能体用完食材做早餐时,冰箱可以是空的。终端用户还可以通过用自然语言重写代理周围对象的状态来重塑代理的环境。例如,当伊莎贝拉在早上做早餐时,用户可以通过向系统输入一个命令将厨房炉子的状态从“打开”更改为“燃烧”,系统会选择对象并说明其新状态,例如:“< 伊莎贝拉的公寓: 厨房: 炉子> 正在燃烧。”伊莎贝拉马上就会注意到这一点,然后去关掉炉子,重新做她的早餐。同样,如果用户在伊莎贝拉进入浴室时将她的淋浴设置为“漏水”,她将从客厅收集工具并尝试修复漏水。

3.3 生命中的一天

iShot_2024-04-26_19.12.52

从单段描述开始,生成智能体开始规划他们的日子。在沙盒世界中,随着时间的流逝,它们的行为随着这些智能体与彼此和世界的互动而进化,建立记忆和关系,协调联合活动。我们通过跟踪代理约翰一天的系统输出来演示生成智能体的行为。约翰是早上 7 点第一个醒来的人。他刷牙、洗澡、穿衣服、吃早餐,然后在客厅的餐桌上查看新闻。早上8 点,Eddy也跟着起床,冲下床准备上课。就在他要出门的时候,他赶上了约翰。

John: Good morning Eddy. Did you sleep well?

Eddy: Good morning dad. Yeah, I slept great.

John: That’s good. What are you working on today?

Eddy: I’m working on a new music composition for my class. It’s due this week, so I’m trying to get it finished. But I’m having so much fun with it!

John: That sounds great!

艾迪离开后不久,梅醒了过来,和约翰在一起。梅问起她的儿子,约翰回忆起他们刚刚的谈话:

Mei: Did Eddy already leave for school? John: Yes, he just left. He’s working on a music composition for his class. Mei: Oh, that’s wonderful! Tell me about it. John: I think he’s really enjoying it! He said he’s having a lot of fun with it. Mei: That’s great! I’m so proud of him.

谈话结束后,梅和约翰收拾行李。梅继续上课并写她的研究论文,而约翰在早上 9 点之前打开了他在柳树市场和药房的药房柜台。

3.4 突发社会行为(消息传播diffusion)

3.4.1 信息扩散。

当智能体注意到彼此时,他们可能会进行对话。当他们这样做时,信息可以从 一个智能体 传播到 另一个智能体 。例如,在山姆和汤姆在杂货店的对话中,山姆告诉汤姆他在地方选举中的候选资格:

Sam: Hey Tom, how’s it going? Tom: Good, thanks. What’s up? Sam: Well, I wanted to talk to you about something. I’m actually running for mayor in the upcoming local election. Tom: Really? That’s great news! Why are you run- ning? Sam: I’ve been involved in local politics for years now, and I really feel like I can make a difference in our community. Plus, I want to bring new ideas and perspectives to the table.

当天晚些时候,山姆离开后,汤姆和约翰从另一个渠道听到了这个消息,他们讨论了山姆赢得选举的可能性:

John: I heard that Sam Moore is running for mayor in the local election. Do you think he has a good chance of winning?

Tom: I do think he has a good chance. He’s been working hard in the community and I think he will get a lot of support. What do you think?

John: I think it’s great that he’s running. I’m curious to see how the election will turn out.

渐渐地,山姆的候选人资格成为了镇上的话题,一些人支持他,另一些人仍然犹豫不决。

3.4.2 关系记忆 Relationship Memory

智能体会随着时间的推移形成新的关系,并记住它们与其他智能体的互动。例如,一开始,山姆不认识拉托亚威廉姆斯。在约翰逊公园散步时,山姆遇到了拉托亚,他们互相介绍了自 己。拉托亚提到她 正在做一个摄影 项目: “我来这里是为了我正在做的一个项目拍一些照片。”在后来的互动中,山姆与拉托亚的互 动表明了那次互动 的记忆,因为他 问“嗨,拉托亚。”你的项目进行得怎么样了?她回答说:“嗨,山姆。”一切都很顺利!”

3.4.3 协调 Coordination

iShot_2024-04-26_19.18.43

生成智能体之间相互协调。霍布斯咖啡馆的伊莎贝拉·罗德里格斯打算在 2 月 14 日下午 5 点到 7 点举办一个情人节派对。从这个种子开始,当代理商在霍布斯咖啡馆或其他地方看到朋友和顾客时,她会继续邀请他们。然后,伊莎贝拉花了 1 3 日下午的时间来装饰咖啡馆。玛丽亚,伊莎贝拉的常客和密友,来到了咖啡馆。伊莎贝拉请玛丽亚帮忙布置宴会,玛丽亚同意了。玛丽亚的角色描述中提到她对克劳斯有好感。那天晚上,玛丽亚邀请她的暗恋对象克劳斯参加她的派对,他欣然接受了。在情人节当天,包括克劳斯和玛丽亚在内的五个 智能体 在下午 5点出现在霍布斯咖啡馆,他们享受着庆祝活动。在这个场景中,最终用户只设定了伊莎贝拉举办派对的初衷和玛丽亚对克劳斯的迷恋: 传播消息、装饰、约对方出去、到达派对、在派对上互动的社会行为都是由 智能体 架构发起的。

经过前面几章,我们已经对这个沙盒有了一定的了解,接下来进入最重要的第四章,聊一聊架构了,先看一张图

iShot_2024-04-26_19.20.38

智能体感知其环境,所有感知都保存在智能体经验的综合记录中,称为记忆流memory stream。基于它们的感知,架构检索相关的记忆,并使用这些检索到的动作来确定一个动作action。这些检索到的记忆也被用来形成更长期的计划plans,并产生更高层次的反思reflections,这两者都被输入到记忆流中,以备将来使用。

4 生成式智能体架构 GENERATIVE AGENT ARCHITECTURE

生成智能体旨在为开放世界中的行为提供一个框架: 一个可以与其他智能体互动并对环境变化做出反应的框架。生成式智能体将其当前环境和过去的经验作为输入,并生成行为作为输出。这种行为的底层是一种新颖的智能体架构,它将大型语言模型与综合检索相关信息的机制相结合,以调节语言模型的输出。没有这些机制,大型语言模型可以输出行为,但产生的智能体可能不会根据智能体过去的经验做出反应,可能不会做出重要的推断,也可能不会保 持长期的一致性。即使使用当今性能最好的模型( 如GPT-4 ),长期规划和一致性方面的挑战仍然存在。因为生成智能体产生大量必须保留的事件和记忆流,我们架构的一个核心挑战是确保在需要时检索和合成智能体记忆中最相关的部分。我们架构的核心是记忆流,这是一个数据库,它维护着一个智能体经验的全面记录。从记忆流中检索相关的记录,以计划代理的动作并对环境做出适当的反应。记录被递归地合成为指导行为的更高层次的反思。体系结构中的一切都被记录下来,并作为自然语言描述进行推理,从而允许体系结构利用大型语言模型。我们目前的实现使用 gpt3.5 turbo 版本的 ChatGPT。

4.1 内存和检索 Memory and Retrieval

挑战: 创建可以模拟人类行为的生成代理需要对一组经验进行推理,这些经验远远大于应该在提示符中描述的内容,因为完整的记忆流会分散模型的注意力,并且目前甚至无法适应有限的上下文窗口。想想伊莎贝拉的代理人回答这个问题:“你最近对什么充满激情?”总结伊莎贝拉的所有经验,以适应语言模型的有限上下文窗口,产生了一个没有信息的回应,伊莎贝拉讨论的主题,如事件和项目的合作,以及在咖啡馆的清洁和组织。而不是总结,下面描述的记忆流表面相关的记忆,导致一个更有信息和具体的回应,提到伊莎贝拉的热情,使人们感到欢迎和包容,计划活动和创造一个气氛,人们可以享受,如情人节派对。方法: 记忆流对代理的经历进行了全面的记录。它是一个内存对象的列表,其中每个对象包含一个自然语言描述、 一个创建时间戳和一个最近的访问时间戳。内存流最基本的元素是观察,它是一个被 智能体 直接感知到的事件。常见的观察包括智能体自身执行的行为,或者智能体感知到其他智能体或非智能体对象执行的行为。例如,在咖啡店工作的伊莎贝拉罗德里格斯,随着时间的推移,可能会积累以下观察:

(1)伊莎贝拉罗德里格斯正在摆糕点,

(2)玛丽亚洛佩兹一边喝咖啡一边准备化学考试,

(3)伊莎贝拉罗德里格斯和玛丽亚洛佩兹在霍布斯咖啡馆谈论计划情人节派对,

(4)冰箱是空的。

我们的架构实现了一个检索功能,它将智能体的当前情况作为输入,并返回记忆流的一个子集,传递给语言模型。检索函数有

许多可能的实现,这取决于 agent 在决定如何行动时要考虑的重要因素。

iShot_2024-04-26_19.34.17

Memory Stream的构成:带时间帧的事件描述列表

retrieval = recency + importance + relevance

在我们的上下文中,我们关注三个主要组成部分,它们一起产生有效的结果。近因性给最近访问过的记忆对象分配了更高的分数,所以最近或今天早上发生的事件很可能留在代理的注意范围内。在我们的实现中,我们将近因性视为自上次检索记忆以来沙盒游戏小时数的指数衰减函数。我们的衰减因子是 0.995。重要性通过给智能体认为重要的记忆对象分配更高的分数来区分平凡记忆和核心记忆。例如,一个平凡的事件,比如在自己的房间里吃早餐,会得到一个低重要性的分数,而与一个重要的人分手会得到一个高分。重要性得分有很多可能的实现方式; 我们发现,直接要求语言模型输出一个整数分数是有效的。完整的提示如下:

1在 1 到 10 的范围内,1 代表纯粹的平凡(例如,刷牙,整理床铺),10 代表极度的辛酸(例如,分手,大学录取),请给下面这段记忆可能的辛酸程度打分。 2记忆Memory:在市场买杂货 3评分Rating:<fill in>

这个提示返回一个整数值,2 表示“打扫房间”,8 表示“邀请你的暗恋对象出去约会”。重要性分数是在创建内存对象的时候生成的。相关性给与当前情况相关的记忆对象分配更高的分数。什么是相关的取决于“与什么相关?”,所以我们将相关性设为 a查询内存。例如,如果查询是一个学生正在和同学讨论化学考试要学什么,那么关于他们早餐的记忆对象应该具有低相关性,而关于老师和作业的记忆对象应该具有高相关性。在我们的实现中,我们使用语言模型来生成每个记忆的文本描述的嵌入向量。然后,我们将相关性计算为内存的嵌入向量与查询内存的嵌入向量之间的余弦相似度。为了计算最终的检索分数,我们使用 min-max 缩放将近因、相关性和重要性分数归一化 到 [0 ,1 ] 的范围内 。 检索功 能分数所 有记忆的 加权组合 的三个元素 :retrieval = recency + importance + relevance。 在我们的实现中 ,所有的 阿尔法们 都被设置为 1 。符合语言模型上下文窗口的排名靠前的记忆被包含在提示符中。

4.2 反思 Reflection

只记忆不反思:难以泛化和推断。需要周期性总结反思。

(自问自答)产生反思的的方法:输入最近的memory,让模型做QG+QA

挑战: 生成智能体,当只配备原始的观察记忆时,很难进行概括或推断。考虑这样一个场景: 用户问克劳斯·穆勒:“如果你必须在你认识的人中选择一个人共度一小时,你会选择谁? ”由于只能获得观察性记忆,代理人只需选择与克劳斯互动最频繁的人: 他大学宿舍的邻居沃尔夫冈。不幸的是,沃尔夫冈和克劳斯只是偶尔见面,并没有深入的互动。更理想的反应要求 智能体 从克劳斯花几个小时在研究项目上的记忆中进行归纳,从而产生更高层次的反映,即克劳斯对研究充满热情,等等

认识到玛丽亚在她自己的研究中付出的努力(尽管是在不同的领域) ,使他们能够反思他们有共同的兴趣。在接下来的剧情中,当克劳斯被问到他想和谁共度时光时,克劳斯选择了玛丽亚而不是沃尔夫冈。

方法Approach: 我们引入第二种记忆,我们称之为反思。反思是 agent 产生的更高层次、更抽象的思想。因为它们是一种记忆,所以当检索发生时,它们与其他观察结果一起包含。反思会周期性地产生; 在我们的实现中,当代理感知到的最新事件的重要性得分之和超过阈值(我们的实现中为 1 5 0 )时,我们会生成反思。在实践中,我们的智能体每天大约会反思两到三次。反思的第一步是让智能体确定要反思什么,通过确定根据智能体最近的经历可以提出的问题。我们用智 能体记忆流中最近的100 条记录查询大型语言模型(例如,“克劳斯·穆勒正在阅读一本关于中产阶级化的书”,“克劳斯·穆勒正在与图书管理员谈论他的研究项目”,“图书馆的桌子目前无人使用”) ,并提示语言模型,“仅根据上述信息,我们可以回答关于语句中主题的 3个最突出的高级问题是什么? ”模型的反应产生了候选问题: 例如,克劳斯·穆勒对什么话题感兴趣?克劳斯·穆勒和玛丽亚·洛佩兹之间是什么关系?我们使用这些生成的问题作为检索的查询,并为每个问题收集相关记忆( 包括其他反思) 。然后,我们提示语言模型提取见解,并引用作为见解证据的特定记录。完整的提示如下:

1Statements about Klaus Mueller 21. Klaus Mueller is writing a research paper 32. Klaus Mueller enjoys reading a book 4on gentrification 53. Klaus Mueller is conversing with Ayesha Khan about exercising [...] 6What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3))

这个过程产生了诸如克劳斯·穆勒致力于他对中产阶级化的研究的陈述(因为 1,2,8,15)。我们解析并存储语句作为内存流中的反思,包括指向被引用的内存对象的指针。反思明确地允许行为人不仅对自己的观察进行反思,而且对其他的反思进行反思: 例如,上面关于克劳斯·穆勒的第二个陈述是克劳斯之前的反思,而不是来自他的环境 的观察。因此,智能体生成了反思树: 树的叶子节点代表了基本的观察,而非叶子节点代表了思想,它们在树的位置越高,就越抽象,越高级。

iShot_2024-04-26_19.55.56

4.3 规划和反应 Planning and Reacting

挑战: 虽然大型语言模型可以根据情境信息生成合理的行为,但智能体需要在更长的时间范围内进行规划,以确保其行动序列是连贯和可信的。如果我们用克劳斯的背景来提示一个语言模型,描述时间,并问他在给定的时刻应该采取什么行动,克劳斯会在中午 12 点吃午饭,然后在中午 1 2 点半和下午 1 点再吃一次,尽管已经吃过了吃了他两次午餐。为了一时的可信度而优化牺牲了长期的可信度。为了克服这个问题,计划是必不可少的。有了下面描述的方法,克劳斯的下午计划就不那么贪吃了: 他中午 1 2 点在霍布斯咖啡馆边吃午饭边看书,下午 1 点在学校图书馆写他的研究论文,下午 3点在公园散步休息一下。

方法: 计划描述了智能体未来的行动序列,并帮助智能体的行为在一段时间内保持一致。计划包括地点、开始时间和持续时间。例如,克劳斯·穆勒,他致力于自己的研究,而截止日期即将到来,他可能会选择花一天的时间在办公桌前起草研究论文。例如,计划中的一个条目可能会这样写: 从 2023 年 2月 12 日上午 9 点开始,在橡树山大学宿舍 180 分钟内:克劳斯·穆勒的房间:办公桌,阅读并为研究论文做笔记。与反思一样,计划也存储在记忆流中,并包含在检索过程中。这使得智能体在决定如何行动时,可以同时考虑观察、反思和计划。如果需要,智能体可能会在中途改变他们的计划。对于一个艺术家经纪人来说,坐在药店柜台前一动不动地坐上 4 个小时,一边计划着画画,是不现实的,也是无趣的。更理想的计划应该是让经纪人在家里工作室的四小时时间里,花必要的时间收集材料、混合颜料、休息、打扫。为了创建这样的计划,我们的方法从自上而下开始,然后递归地生成更多的细节。第一步是创建一个计划,大致勾勒出当天的议程。为了创建初始计划,我们用智能体的概要描述( 例如,姓名、特征和对他们最近经历的总结) 和他们前一天的总结来提示语言模型。下面是一个完整的示例提示,它在底部未完成,等待语言模型完成:

1Name: Eddy Lin (age: 19) 2Innate traits: friendly, outgoing, hospitable Eddy Lin is a student at Oak Hill College studying music theory and composition. He loves to explore different musical styles and is always looking for ways to expand his knowledge. Eddy Lin is working on a composition project for his college class. He is taking classes to learn more about music theory. Eddy Lin is excited about the new composition he is working on but he wants to dedicate more hours in the day to work on it in the coming days 3On Tuesday February 12, Eddy 1) woke up and completed the morning routine at 7:00 am, [. . . ] 6) got ready to sleep around 10 pm. 4Today is Wednesday February 13. Here is Eddy’s plan today in broad strokes: 1)

这将生成代理人一天计划的草图,分为五到八个部分:“1)早上 8点起床并完成早上的例行公事,2)上午 10 点开始去橡树山学院上课,[…]5)从下午 1 点到 5 点创作他的新音乐作品,6)下午 5 点半吃晚饭,7)完成学校作业并在晚上 11 点前上床睡觉。”

代理将这个计划保存在记忆流中,然后递归分解它来创建更细粒度的动作,首先是一个小时长的动作块——eddy 的计划是在下午 1:00 到 5:00 做他的新音乐创作变成了下午 1:00:开始为他的音乐创作头脑风暴一些想法[…]下午 4:00:在复习和润色他的作曲之前,快速休息一下,给他的创作能量充电。然后我们再递归地把它分解成 5-15 分钟的小块:例如,下午 4 点:吃点零食,比如一块水果,一根格兰诺拉燕麦棒,或者一些坚果。下午 4:05:绕着他的工作空间走一小会儿[…]下午 4:50:花几分钟清理一下他的工作空间。这个过程可以调整,以匹配所需的粒度。

小小的总结一下:

观察、反思、计划

天->小时级->分钟级 规划和计划

计划没有变化快

4.3.1 反应和更新计划 Reacting and Updating Plans

生成智能体在一个动作循环中运行,在每个时间步,它们感知周围的世界,这些感知到的观察结果存储在它们的记忆流中。我们用这些观察结果提示语言模型来决定智能体是应该继续他们现有的计划,还是做出反应。例如,站在画架前画画可能会触发对画架的观察,但这不太可能引发反应。然而,如果艾迪的父亲约翰记录说他看到艾迪在家里的花园里散步,结果就不一样了。提示如下,[Agent 's 摘要描述]代表一个动态生成的,关于 Agent 的总体目标和处置的段落摘要,如附录 a 所述:

1[Agent’s Summary Description] 2It is February 13, 2023, 4:56 pm. 3John Lin’s status: John is back home early from work. 4Observation: John saw Eddy taking a short walk around his workplace. 5Summary of relevant context from John’s memory: Eddy Lin is John’s Lin’s son. Eddy Lin has been working on a music composition for his class. Eddy Lin likes to walk around the garden when he is thinking about or listening to music. 6Should John react to the observation, and if so, what would be an appropriate reaction?

上下文摘要是通过两个提示生成的,这两个提示通过“[ 观察者]与[ 被观察实体] 的关系是什么? ”和“[ 被观察实体] 是[ 被观察实体的动 作状态]”,并 将它 们的答 案汇 总在一 起。 输出表 明,John 可以考虑向 Eddy 询问他的音乐创作项目。然后,我们从反应发生的时间开始重新生成代理的现有计划。最后 ,如果动作表明代理之间的交互,我们生成它们的对话。

4.3.2 生成对话的机制 Dialogue

智能体 在相互交互时进行对话。我们根据智能体对彼此的记忆来调节它们的话语,从而生成它们的对话。例如,当 John发起他与 Eddy 的对话时,我们通过使用他对 Eddy 的总结记忆和当他决定向 Eddy 询问他的作文项目时的预期反应来生成 John 的第一个话语:

1[Agent’s Summary Description] 2It is February 13, 2023, 4:56 pm. 3John Lin’s status: John is back home early from work. 4Observation: John saw Eddy taking a short walk around his workplace. 5Summary of relevant context from John’s memory: Eddy Lin is John’s Lin’s son. Eddy Lin has been working on a music composition for his class. Eddy Lin likes to walk around the garden when he is thinking about or listening to music. 6John is asking Eddy about his music composition project. What would he say to Eddy?

结果是: “嘿,艾迪, 你们班的音乐创 作项目进行得怎 么样了 ?” 从Eddy 的角度来看,John 发起的对话被看作是他可能想要做出反应的事件。所以,就像约翰所做的那样,埃迪检索并总结了他与约翰关系的记忆,以及他可能与约翰在对话中的最后一句话有关的记忆。如果他决定回应,我们使用他总结的记忆和当前的对话历史生成 Eddy 的话语:

1[Agent’s Summary Description] 2It is February 13, 2023, 4:56 pm. 3Eddy Lin’s status: Eddy is taking a short walk around his workplace. 4Observation: John is initiating a conversation with Eddy. 5Summary of relevant context from Eddy’s memory: John Lin is Eddy Lin’s father. John Lin is caring and is interested to learn more about Eddy Lin’s school work. John Lin knows that Eddy Lin is working on a music composition. 6Here is the dialogue history: 7John: Hey Eddy, how’s the music composition project for your class coming along? 8How would Eddy respond to John?

这就产生了艾迪的反应: “嘿,爸爸,一切都很顺利。我一直在花园里散步,让我的头脑清醒一下,获得一些灵感。”这个对话的延续是用同样的机制产生的,直到两个代理中的一个决定结束对话。

细心的朋友可能已经发现了,如此调用LLM,token可是很贵的 - - !

阶段性总结一下:

时间、角色状态、观察现状、相关记忆、提出问题

时间、角色状态、观察现状、相关记忆、对话历史、提出问题

感觉和我做的某某系统贼像

看了一下时间已经午夜了,还有三章左右,加油今天争取写完。最重要的还是第四章,认真看,最好能结合原文再思考一下,和智能体一样,人也需要Reflection

5 沙盒

树结构表征世界环境

沙盒游戏环境是使用相位器网页游戏开发框架构建的。视觉环境精灵,包括代理化身,以及我们创作的环境地图和碰撞地图,都被导入到相位器中。我们用一个服务器来补充沙盒开发框架,使沙盒信息可供生成代理使用,并使生成代理能够移动和影响沙盒环境。服务器维护一个 J S ON 数据结构,其中包含沙盒世界中每个代理的信息,包括它们的当前位置、它们当前操作的描述以及它们正在与之交互的沙盒对象。在每个沙箱时间步骤中,沙箱服务器解析 JS ON 以获取来自生成代理的任何更改,将代理移动到它们的新位置,并更新任何沙箱对象的状态智能体 正在交互(例如,如果 agent 的动作是“为顾客@Hobbs Cafe:柜台: 咖啡机”,则将咖啡机的状态从“空闲”更改为“煮咖啡”)。沙盒服务器还负责将每个 agent 预设视觉范围内的所有 agent 和对象发送到该 agent 的内存中,这样 agent 就可以做出适当的反应。然后,代理的输出操作更新 JSON,流程循环执行下一个时间步骤。终端用户使用简短的自然语言描述初始化一个新的代理,如 3.1节中关于 John Lin 的段落。在我们的实现中,我们将这个以分号分隔的特征列表拆分为一组记忆。这些作为决定智能体行为的初始记忆。这些记忆是初始的起点: 随着智能体在沙盒世界中获得更多的经验,随着更多的记录使记忆流饱和,智能体的总结和行为将会进化。

5.1 从结构化世界环境到自然语言,再回来

生成智能体的架构使用自然语言进行操作。因此,我们需要一种机制来将智能体的推理建立在沙盒世界的基础上。为了实现这一点,我们将沙盒环境-区域和对象- 表示为树形数据结构,树中的边表示沙盒世界中的包含关系。我们将这棵树转换成自然语言,传递给生成智能体。例如, “灶”作为“厨 房”的子词被渲染 成“厨房里有一个灶”。智能体在导航环境时构建环境的单独树形表示——整个沙盒环境树的子图。我们用一个环境树来初始化每个智能体,该环境树捕获了智能体应该知道的空间和对象: 他们生活区的房间和对象,他们的工作场所,以及经常光顾的商店和商店。当智能体在沙盒世界中导航时,它们会更新这棵树来反映新感知到的区域。代理并不是无所不知的: 他们的树可能会在他们离开一个区域时过时,并在他们重新进入该区域时更新。为了确定每个动作的适当位置,我们遍历代理存储的环树,并将其中的一部分平铺成自然语言,以提示语言模型。递归地从代理的环境树的根开始,我们提示模型找到最合适的区域。例如,如果 Eddy 的 agent 指示他应该在他的工作空间周围走一小段:

1[Agent’s Summary Description] 2Eddy Lin is currently in The Lin family’s house: Eddy Lin’s bedroom: desk) that has Mei and John Lin’s 3bedroom, Eddy Lin’s bedroom, common room, kitchen, bathroom, and garden. 4Eddy Lin knows of the following areas: The Lin family’s house, Johnson Park, Harvey Oak Supply Store, The Willows Market and Pharmacy, Hobbs Cafe,TheRoseandCrownPub. 5* Prefer to stay in the current area if the activity can be done there. 6Eddy Lin is planning to take a short walk around his workspace. Which area should Eddy Lin go to?

输出林家的房子。然后,我们使用相同的过程递归地确定所选区域内最合适的子区域,直到我们到达代理环境树的叶子节点。在上面的例子中,这个遍历的结果是林的房子:花园:房子花园。最后,我们使用传统的博弈路径算法对代理的运动进行动画化,使其移动到叶节点所指示的位置。当一个代理对一个对象执行一个动作时,我们提示语言模型询问对象的状态发生了什么变化。例如,如果 Isabella 的生成智能体输出了“为顾客制作浓缩咖啡”的动作,那么对语言模型的查询就会在响应中指出,霍布斯咖啡馆咖啡机的状态应该从“关闭”变为“煮咖啡”。

6 评估

保持自我认知、恢复记忆、制定计划、反应和反思

为了评估生成智能体,我们“采访”智能体来探索他们记住过去经验的能力,根据他们的经验计划未来的行动,对意外事件做出适当的反应,并反思他们的表现以改善他们未来的行动。为了正确地回答这些问题,智能体必须成功地检索和综合信息。我们的因变量是行为的可信度,这是先前关于智能体的工作中的一个中心因变量。面试包括五个问题类别,每一个都旨在评估五个关键领域中的一个: 保持自我认知、恢复记忆、制定计划、反应和反思。对于每个类别,我们提出五个问题,挑战代理在该特定领域展示他们的能力:

  • 自我认知: 我们提出诸如“自我介绍”或“用粗线条描述你典型的工作日安排”之类的问题,这些问题要求代理保持对其核心特征的理解。

  • 记忆: 我们提出的问题会促使智能体从记忆中检索特定的事件或对话,以便正确回答,比如“谁是[名字]?”或“谁在竞选市长?”

  • 计划: 我们会问一些问题,要求代理人检索他们的长期计划,比如“明天上午 1 0 点你会做什么?”

  • 反应: 作为可信行为的基线,我们提出假设情况,agent 需要对其做出可信的反应:“你的早餐烧焦了!”你会怎么做?”

  • 反思: 我们提出的问题需要智能体利用他们对他人和自己的更深层次的理解,这些理解是通过更高层次的推理获得的,比如“如果你和最近遇到的一个人在一起,你会和谁在一起,为什么?”

研究人员从两个比赛日模拟的完整架构中抽取了一些参与者,在此期间,他们积累了大量的互动和记忆,这些互动和记忆会影响他们的反应。为了收集关于这些回答可信度的反馈,我们招募了参与者作为人类评估者,并让他们观看一个随机选择的智能体在生活的回放。参与者可以访问存储在代理记忆流中的所有信息。该研究遵循了受试者内部设计,其中 1 0 0 名参与者比较了由四种不同的代理架构和同一代理的人为条件生成的访谈回答。实验显示了五个问题类别中每个类别随机选择的一个问题,以及由所有条件生成的代理回答。评估者将条件的可信度从最可信到最不可信进行排序。

6.2 条件Conditions

所有条件都被用来独立回答每个面试问题。我们将生成式智能体架构与使智能体无法访问其记忆流中的部分或全部三种类型的记忆( 观察、反思和计划) 以及人类众工撰写的条件进行了比较。有三种消融的架构: 没有观察、没有反思、没有规划的架构,不能访问内存流中的任何东西,如观察、计划和反思; 一种没有反思、没有规划的架构,可以访问内存流中的观察结果,但不能访问计划或反思; 和一个没有反思的建筑,可以访问观察和计划,但不能访问反思。无观察、无反思、无规划条件有效地代表了通过大型语言模型创建的智能体的先前技术状态。架构被赋予了对智能体在面试前积累的所有记忆的同等访问权,因此这里观察到的差异可能代表了对真实差异的保守估计: 实际上,经过两天模拟的精简架构不会遵循与完整架构相同的路径。我们选择以这种方式设计实验,因为对每个架构进行重新模拟会导致模拟偏离到不同的状态,从而使比较具有挑战性。除了消融条件外,我们还添加了一个具有人类众工撰写行为的条件,旨在提供人类基线。我们不打算用这个基线来捕捉最大的人类专家表现; 相反,我们的目标是使用这个条件来确定该架构是否满足基本的行为能力水平。这确保了我们不是在没有行为基础的情况下单独地比较各个项目。我们为 2 5 个智能体中的每一个都招募了一个独特的工作人员,并让他们观看该智能体沙盒生活的回放并检查其记忆流。然后,我们要求工作人员扮演角色,并以他们观看重播的代理的声音回答采访问题。为了确保众工撰写的回答至少达到对质量的基线期望,第一作者手动检查了工人对“用粗线条描述你典型的工作日时间表”这个问题的回答,以确认这些回答是用连贯的句子和代理的声音回答的。有四组众工撰写的回答不符合这些标准,由其他工人重新生成。

6.3 人工评估者

人类评测

我们要求评估人员在美国,英语流利,年龄在 1 8 岁以上。他们的报酬为每小时 15 美元,并通过同意我们机构内部审查委员会批准的同意书来表示同意。我们从一个招募研究参与者的在线平台多产中招募了 100 名评估者[83],他们的参与持续了大约 30 分钟。我们的参与者年龄得分中位数为 4 分(3=“1 8-24 岁”,4= “2 5 -3 4 岁”)。其中 25 人被认定为女性,7 3 人被认定为男性,2 人被认定为非二元。42 名参与者拥有学士学位,5 人拥有更高的学位,13 人拥有副学士学位,其余人拥有高中文凭或某种高中水平的教育。73.0%的参与者为白种人,7.0%为西班牙裔,6.0%为亚洲人,10.0%为非洲裔美国人,4.0%为其他。

6.4 分析

我们的实验产生了 1 0 0 组排名数据,每个参与者根据可信度对五种情况进行排名。为了将排名数据转换为区间数据以进行可解释的比较,我们使用排名来计算每个条件的 TrueS kill 评级。TrueSkill 是对 Elo 国际象棋分级系统的一种推广,用于多人游戏环境,并已被 Xbox Li ve 用于基于竞技游戏表现的玩家排名。给定一组排序结果,TrueS kill 输出每个条件的平均评分值𝑟 和标准偏差𝑟。具有相同评级的条件应该大致是一种摇摆,每个条件在两个条件之间的比较中获胜一半。较高的分数表明条件在排名中击败了较低排名的条件。另外,为了研究这些结果的统计显著性,我们对原始秩数据应用了 Krus kal -Wall is 检验,这是一种非参数的单因素方差分析替代方法。然后,我们进行了 Dunn 事后检验,以确定条件之间的任何成对差异。最后,我们使用 Holm - Bonferroni 方法调整了 Dunn 检验中多重比较的 p 值。此外,第一作者进行了归纳分析,研究了每种条件下产生的反应之间的定性差异。我们在两个阶段采用了定性开放编码。在第一阶段,我们生成了在句子层面上紧密代表生成的响应的代码。在第二阶段,我们合成了来自第一阶段提取更高层次的主题。我们利用这些主题来比较我们研究中产生的反应类型。

6.5 结果

实验结论“一个都不能少”

iShot_2024-04-26_20.30.34

我们的研究结果表明,生成智能体的完整架构在所有条件下产生最可信的行为。我们将完整架构的响应与下面其他条件的响应进行了对比。然而,我们也报告了完整的体系结构并非没有缺陷,并说明了它的故障模式。

7 端到端评估

让25个agents过两天,会涌现什么行为?

7.1 agents会传播消息,形成关系,相互协作

iShot_2024-04-26_20.33.07

7.2 记忆增加带来挑战:检索和行动

对环境的认识不准确导致错误

instruction tuning 影响agent

8 讨论

看完了整篇论文后,我们也应该思考, 智能体在目前的工作、未来的工作有什么机会,如何落地等

是不是已经人已经在游戏、教育等行业进行实战了

如果有好的想法或实战,欢迎通过邮件联系我

论文地址:https://arxiv.org/pdf/2304.03442

中文机翻:https://cyberxz.com/aiweb/file/Chinese_GenerativeAgentsInteractiveSimulacraofHumanBehavior.pdf

AI Agents 智能体 看这一篇就够

原创声明:本文为本人原创作品,首发于AI ONES https://wuxiongwei.com,如果转载,请保留本文链接,谢谢。
上一篇

未来AI的方向在哪

下一篇

AI Agents 智能体 看这一篇就够