《Generative Agents: Interactive Simulacra of Human Behavior》全文翻译

news2024/11/15 13:57:06

《Generative Agents: Interactive Simulacra of Human Behavior》- 生成式代理:人类行为的交互式拟真

  • 论文信息
  • 摘要
  • 1. 引言
  • 2. 相关工作
    • 2.1 人机交互
    • 2.2 可信的人类行为代理
    • 2.3 大型语言模型与人类行为
  • 3. 生成式代理行为和交互
    • 3.1 代理形象和交流
      • 3.1.1 代理间交流
    • 3.2 环境交互
    • 3.3 “生活中的一天”示例
    • 3.4 社会行为的出现
  • 4. 生成式代理架构
    • 4.1 记忆和检索
    • 4.2 反思
    • 4.3 计划和反应
  • 5. 沙盒环境实现
    • 5.1 从结构化世界环境到自然语言,再回到结构化世界环境
  • 6. 控制评估
    • 6.1 评估过程
    • 6.2 条件
    • 6.3 人类评估员
    • 6.4 分析
    • 6.5 结果
  • 7. 端到端评估
    • 7.1 紧急社会行为
    • 7.2 边界和错误
  • 8. 讨论
    • 8.1 生成式代理的应用
    • 8.2 未来工作和局限性
    • 8.3 伦理和社会影响
  • 9. 结论
  • A 架构优化
  • B 代理面试问题
    • B.1 自知之明
    • B.2 记忆
    • B.3 计划
    • B.4 反应
    • B.5 反思

论文信息

  • 题目:《Generative Agents: Interactive Simulacra of Human Behavior》
  • 作者:Joon Sung Park et al.
  • 会议:UIST(人机交互领域顶会)
  • 发表时间:6 Aug 2023
  • 官方代码:https://github.com/joonspk-research/generative_agents;
  • 内容概述:斯坦福大学和谷歌的研究人员进行的一项实验,他们用 AI 来填充一个虚拟的小镇,观察 AI 能否模拟人类行为的真实性。这篇论文提出了一种新的人工智能系统,叫做生成式代理(generative agents),它们能够模拟人类行为的真实性。生成式代理可以根据自己的经历、兴趣和目标来规划自己的行为,例如起床、做早餐、去工作、画画、写作、交流、回忆和反思等。

摘要

可信的人类行为代理可以赋予从沉浸式环境到人际交流演练再到原型设计工具等一系列交互式应用。本文提出生成式代理——一种可以模拟人类行为的计算软件代理。为实现生成式代理,我们提出了一个代理架构,它通过使用自然语言存储代理全部经历的完整记录,并随时间把这些记忆合成为更高层次的思考,在需要时检索这些记忆以规划行为。我们实例化生成式代理来填充一个类似The Sims的沙盒环境,环境中有25个代理和终端用户可以用自然语言进行交互。评估结果表明,这些生成式代理可以产生可信的个体和群体行为:例如,仅从一个用户指定的单一理念出发,即一个代理想要举办情人节派对,最终代理们在接下来的两天内主动相互传递派对邀请,结识新朋友,约会参加派对,并协调聚会时间一起出席派对。通过消除代理对记忆、思考和计划的访问,我们展示了架构的每个组成部分对产生可信行为都至关重要。借由大型语言模型与计算交互式代理的融合,本工作引入了支持可信的人类行为模拟的交互式模式和架构模式。

关键词: 人机交互,代理,生成式AI,大型语言模型

1. 引言

我们如何创造一个可以反映可信人类行为的交互式人工社会呢?从The Sims等沙盒游戏到认知模型[21]和虚拟环境[9,58]的应用,在过去的40多年里,研究人员和从业者一直设想可以作为人类行为可信代理的计算代理。在这些愿景中,由计算驱动的代理按照其过去的经历和对环境的反应进行行动。如果可能的话,这样的人类行为模拟可以用来充实虚拟空间和社区中的实际社会现象[26,79],训练人们如何处理稀有但棘手的人际情况[43,51,93],测试社会科学理论[11,45],构建认知模型以进行理论和可用性测试[21,38,50],支持普适计算应用[30]和社交机器人[9,13],并支撑开放世界游戏[58,84]中能够处理复杂人际关系的非玩家角色。

然而,人类行为的空间是广阔且复杂的[16,108]。尽管在大型语言模型[17]方面取得了惊人的进步,它们可以在单个时间点[38,79]模拟可信的人类行为,但对代理的要求是能够管理不断增长的记忆,处理新出现和淡出的交互、冲突和事件,以及处理多个代理之间的级联社会动力学,以确保其行为的长期连贯性。我们需要一种方法,它可以在很长一段时间内检索相关的事件和交互,把这些记忆随时间合成为更高层次的思考,并在需要时检索这些记忆以规划行为,这样生成的行为在当下和从长远来看都具有意义。

在本文中,我们提出生成式代理——一种行为受代理不断变化的经历和环境调节的可信人类行为拟真,并演示它们可以产生可信的个体和群体行为。生成式代理可以对自身、其他代理和环境进行广泛的推理;它们根据自身特征和经历制定日常计划、实施这些计划、在适当的时候做出反应和重新制定计划;当用户改变其环境或用自然语言下达命令时,它们会做出回应。例如,当生成式代理看到自己的早餐正在烧焦时会关闭灶台;当洗手间被占用时会在外面等候;当遇到想要交谈的其他代理时会停下来聊天。一个充满生成式代理的社会充满了社会动力,其中新的关系被建立,信息被传播,代理之间的协调出现。

为实现生成式代理,我们描述了一个代理架构,它通过使用自然语言存储代理全部经历的完整记录,并随时间把这些记忆合成为更高层次的思考,在需要时检索这些记忆以产生可信的行为。我们的架构包含三个主要组件。第一个是记忆流,一个长期记忆模块,用以记录代理所有经历的自然语言描述。检索模型结合相关性、最近访问和重要性,以提炼需要指导代理当前行为的记录。第二个是反思,它随时间合成记忆为更高层次的推论,让代理得出结论来更好地指导自己的行为。第三个是计划,它将这些结论和当前环境转化为高层行动计划,然后递归地转化为详细的行为,用于行动和反应。这些反思和计划反过来又被馈送到记忆流中,影响代理未来的行为。

这个架构启发了多个领域的应用,从角色扮演和社交原型到虚拟世界和游戏。在社交角色扮演场景中,用户可以安全地对复杂的、充满冲突的对话进行演练。在原型设计社交平台时,设计人员可以超越暂时的人物原型,原型复杂的交互随时间展开。为了本文的目的,我们专注于一个类似The Sims的交互式代理社会的实例。(The Sims是一个著名的角色扮演沙盒游戏,玩家可以控制游戏中的虚拟角色进行各种社交互动。)通过将我们的架构连接到ChatGPT大型语言模型[76],我们在游戏环境中实现了一个由25个代理组成的小镇。最终用户可以观察和与这些代理交互。例如,如果最终用户或开发人员想要这个小镇举办一个游戏内情人节派对,传统的游戏环境需要手动编写许多字符的行为。我们演示了,对于生成式代理,只需要简单地告诉一个代理她想要举办派对就足够了。尽管可能出现许多失败点——派对策划者可能不会付诸行动,可能不会告诉其他人,参会者可能不记得受邀,参会者可能决定不参加——但这个环境中的代理最终都成功了。他们传播派对信息,之后齐聚一堂,甚至有一个代理约另一个代理作为她的情人节派对伴侣,所有这一切仅来源于这个单一的用户生成提示。

我们对生成式代理进行了两阶段的评估:第一阶段是控制评估,在严格控制的环境下测试代理是否可以产生可信的单独行为;第二阶段是端到端评估,考察代理作为一个整体,在两天的游戏时间内进行开放式交互的可信行为、错误和边界条件。在技术评估中,我们利用了一个方法学机遇——以自然语言“面试”代理,探查代理保持角色形象、记忆、计划、反应和准确思考的能力。我们比较了几种改变代理访问记忆、思考和计划能力的去除法。我们观察到,这些组件对代理在这些面试任务中的表现至关重要。在技术评估和端到端评估中,最常见的错误来源于代理无法检索相关记忆、虚构记忆的细节或继承语言模型中的过于正式的语言或行为。

综上所述,本文的贡献如下:

  • 生成式代理,这些代理的行为随着不断变化的经历和环境进行调整,从而产生可信的人类行为拟真。
  • 一种新的架构,使生成式代理能够记忆、检索、思考、与其他代理互动并在动态变化的环境中制定计划。该架构利用了大型语言模型强大的提示能力,并补充了这些能力以支持代理的长期连贯性、管理不断发展的记忆的能力,以及递归产生更多代理世代的能力。
  • 两项评估(控制评估和端到端评估),确立了架构中各组成部分的致因关系,以及识别由错误记忆检索等导致的故障模式。
  • 讨论了生成式代理在交互系统中的应用机会和伦理社会风险。我们认为这些代理应调整以降低用户形成拟社会关系的风险,记录以降低深度伪造和定制劝说带来的风险,并以补充而非取代人类利益相关者的方式应用在设计流程中。
    通过大型语言模型与计算交互式代理的融合,本工作引入了支持可信的人类行为模拟的交互模式和架构模式。

2. 相关工作

在这一节中,我们反思之前关于人机交互的文献,并确定在其典籍中构建可信的人类行为代理的议程。这个议程曾一度被交互、游戏和人工智能社区视为指导方向[9,58,84,85],但由于人类行为的复杂性[16,108]一直存在挑战。我们总结这些研究,提出大型语言模型虽然本身不够,但在采用适当的架构时,可以为创建可信代理打开新视角。

2.1 人机交互

交互式人工智能系统旨在将人类洞察和能力与计算工件相结合,以增强用户能力[3,29]。大量工作已经探索了允许用户以交互方式指定模型行为的方法。例如,Crayons展示了交互机器学习的早期愿景,允许非专家用户训练分类器[29]。进一步的工作帮助阐明了最终用户如何通过示例[33]和/或演示[31]向系统描述其分类目标。最近的工作将这些探索拓展到了深度学习[62]和提示编程[49,66,106]。

与此同时,持续的研究进展了基于语言和代理的人机交互范式。初期的工作例如SHRDLU[103]和ELIZA[102]展示了与计算系统的自然语言交互的机遇和风险。随着研究的进展,自治代理可以提供新的交互隐喻[67],但人与代理之间的委派线仍在被辩论和完善[46,88,89]。近年来,随着这项技术变得足够稳定,代理已经可以通过自然语言在大型复杂的在线社交环境中相互交互(例如,[54])。自然语言交互为用户在照片编辑[2,34,64]和代码编辑[87]等领域提供了扩展能力的新途径。

我们汇集这些研究线程的工作,以显示我们现在可以创建作为人类行为代理的代理,并通过自然语言与它们交互。在这样做的过程中,这项工作重新开启了审视人机交互中一些基础问题,例如认知模型如GOMS和KLM[21,22],原型工具[79]以及普适计算应用[25,30,100]。

2.2 可信的人类行为代理

以前的文献将可信度或可信代理描述为一个核心的设计和工程目标。可信代理旨在提供生命的假象和在决策和行动方式上展现逼真的表象,类似迪士尼电影中的角色[9,95]。这些代理可以感知并存在于我们所处的开放世界中[9,58],并努力以展现社会交互的方式进行行为,目的是在假想的个人和社区模拟中成为我们行为的可信代理[19,35,70]。

从历史上看,这些代理最初是在智能游戏NPC[58,84]的背景下开发的。如果可能,为游戏和交互小说创造具有可信行为的NPC可以通过产生紧急叙事[7,15,48,92]和与代理的社交互动增强玩家体验[110]。但是,更重要的是,游戏世界正在提供越来越逼真的现实物理特性,正如Laird和van Lent在2001年观察到的那样,这些模拟世界为可信代理的开发者提供了无需担心在现实世界实现机器人技术或从零开始构建模拟环境的可访问测试环境[58,84]。

在过去的四十年中,创建可信代理的方法层出不穷。但是,在实现上,这些方法通常简化环境或代理行为的维度以使工作更可管理[16,72]。基于规则的方法,如有限状态机[90,96]和行为树[40,53,81],代表了通过人工编写代理行为的暴力方法[70]。它们提供了一种直接的方式来创建简单的代理,这仍然是今天最主要的方法[68,73,109],并且甚至可以处理基本的社交互动,正如大效应[12]和The Sims[6]系列等模拟游戏中所展示的那样。尽管如此,为开放世界中的所有可能交互手动编写行为是不可持续的。这意味着生成的代理行为可能无法全面代表其交互的后果[69–71],并且不能执行原编程中不存在的新过程[90,96]。另一方面,强化学习等主流的可信代理生成方法克服了手动创作的挑战,通过让代理学习其行为,在最近几年取得了超过人类的表现,例如在StarCraft [98]中的AlphaStar和Dota 2 [10]中的OpenAI Five。然而,它们的成功在很大程度上发生在具有明确可定义奖励的对抗游戏中,学习算法可以对此进行优化。它们还没有解决在开放世界中创造可信代理的挑战[39,73,90]。

Newell提出的计算认知体系结构旨在建立支持全面认知功能的基础设施[75],这与可信代理的全方位本质相符。它们激发了一些最早的可信代理例子。例如,Quakebot-SOAR [59]和ICARUS [24,63]在第一人称射击游戏中生成NPC,而TacAir-SOAR [80]在空中作战训练模拟中生成飞行员。这些代理使用的架构有所不同(Quakebot和TacAir-SOAR依赖于SOAR [60],而ICARUS依赖于受SOAR和ACT-R [5]启发的自己的变体),但它们共享相同的基本原则[61]。它们维护短期和长期记忆,用符号结构填充这些记忆,并以感知-计划-行动循环运行,动态感知环境并将其与手动编写的行动程序相匹配[57,96]。使用认知架构创建的代理旨在使其可推广到大多数(如果不是全部)开放世界上下文,并在当时展示出鲁棒的行为。但是,它们的行动空间仅限于手动编写的程序知识,而且没有提供可以激励代理寻求新行为的机制。因此,这些代理大多被部署在非开放世界环境中,如第一人称射击游戏[24,59]或积木世界[63]。

如其原始定义所述,创建可信代理仍是一个悬而未决的问题[84,108]。许多人转移了注意力,辩称尽管目前创建可信代理的方法可能很麻烦且有限,但它们已经足以支持现有的游戏体验和交互[23,74,108]。我们的论点是大型语言模型为重新审视这些问题提供了一个契机,前提是我们能够设计一个有效的架构来合成记忆以产生可信的行为。本文迈出了向该架构迈进的一步。

2.3 大型语言模型与人类行为

生成式代理利用大型语言模型驱动其行为。关键的观察是大型语言模型在其训练数据中编码了广泛的人类行为表示[14,17]。如果使用严格定义的上下文提示,这些模型可以用来生成可信的行为。最近的工作已经证明了这种方法的有效性。例如,Social Simulacra利用大型语言模型生成用户来填充新的社交计算系统,以原型其社交动力学[79]。这种方法使用提示链[105,106]来生成要在原型系统中出现的用户的简短自然语言描述和行为。其他实证研究复制了现有的社会科学研究[45],政治调查[91]和生成合成数据[38]。

大型语言模型也被用来生成交互式人类行为让用户参与。例如,在游戏领域,这些模型已被用来创造交互小说[36]和文字冒险游戏[20]。凭借其生成和分解行动序列的能力,大型语言模型还被用于规划机器人任务[47]。例如,在给定一个任务时,如拿起一个瓶子,将提示模型将任务分解成更小的行动序列,如走到瓶子所在的桌子旁并拿起它。

根据上述总结的工作,我们认为大型语言模型可以成为创建可信代理的关键因素。现有文献主要依赖于可以视为一次性提示[37,65]或思维链提示[99]的模板。这些模板在仅根据代理当前环境生成行为(例如,巨魔会如何回复某个帖子,机器人需要采取哪些行动才能在门口进入房间)时很有效。然而,可信代理需要不仅基于当前环境而且基于大量过去经历进行调节,这与一次性提示不太匹配(并且由于基础模型的有限上下文窗口,目前也不可能)。最近的研究尝试通过增强语言模型的静态知识库和信息检索方案[52]或简单总结方案[104]来超越一次性提示。本文扩展了这些想法,设计了一个代理架构,可以在每个时间步检索和更新动态的过去经历,并将其与代理当前上下文和计划相结合,两者可能互相增强或产生矛盾。

3. 生成式代理行为和交互

为了阐明生成式代理的功能,我们将它们实例化为The Sims样式沙盒世界中的角色[6]。这个基于像素的沙盒游戏世界Smallville(小镇)勾勒了一个小镇环境。在这一节中,我们会浏览Smallville中生成式代理的功能和交互,并描述这些代理在其中的行为。然后,在第4节中,我们会介绍驱动这些功能和交互的生成式代理架构。在第5节中,我们会描述沙盒环境实现和代理如何与沙盒世界的底层引擎交互。

3.1 代理形象和交流

25个独特的代理居住在Smallville。每个代理都用一个简单的像素形象表示。我们用一段自然语言描述创作了每个代理的身份,包括他们的职业和与其他代理的关系,作为初始记忆。例如,John Lin有以下描述:

John Lin是柳树市场和药房的药剂师,他喜欢帮助别人。他一直在寻找使客户获得药物更轻松的方法; John Lin和他的妻子梅林以及他们的音乐理论专业学生儿子埃迪林一起生活; John Lin非常爱他的家人; John Lin认识了隔壁的老夫妇Sam Moore和Jennifer Moore好几年了; John Lin认为Sam Moore是个善良和友好的人; John Lin很了解他的邻居Yuriko Yamamoto; John Lin知道他的邻居Tamara Taylor和Carmen Ortiz,但从未见过她们; John Lin和Tom Moreno是柳树市场和药房的同事; John Lin和Tom Moreno是朋友,喜欢一起讨论当地政治; John Lin比较了解Moreno一家——丈夫Tom Moreno和妻子Jane Moreno。

每个分号分隔的短语作为初始记忆在模拟开始时输入代理的记忆中。

3.1.1 代理间交流

3.1.1 代理间交流 代理通过行动影响世界,通过自然语言相互交流。在沙盒引擎的每个时间步骤,代理会输出一条描述其当前行动的自然语言语句,例如“Isabella Rodriguez在她的日记本上写着”,“Isabella Rodriguez正在查看她的电子邮件”,“Isabella Rodriguez在和家人通电话”或“Isabella Rodriguez正在准备睡觉”。然后这条语句会被转化为影响沙盒世界的具体动作。该行动在沙盒界面上显示为一组表情符号,在俯视图中抽象表示该行动。为此,系统使用语言模型将行动转换为一组表情符号,它们出现在每个代理的头像上方的语音泡泡中。例如,“Isabella Rodriguez在她的日记本上写着”显示为,而“Isabella Rodriguez正在查看她的电子邮件”显示为。点击代理头像可以访问行动的完整自然语言描述。

代理之间用完整的自然语言进行交流。代理意识到本地区的其他代理,生成式代理架构确定他们是路过还是进行交谈。这里是一个Isabella Rodriguez和Tom Moreno关于即将到来的选举的对话中的样本:

Isabella: 我仍在权衡选择,但我一直在与Sam Moore讨论选举。你对他有什么看法吗?
Tom: 说实话,我不喜欢Sam Moore。我认为他与社区脱节,不关心我们的最大利益。

3.1.2 用户控制 运行此模拟的用户可以通过对话影响模拟,或以“内心之声”的形式向代理发出指令。

用户通过自然语言与代理进行交流,方法是指定代理应感知他们作为的角色。例如,如果用户将自己指定为“记者”,并询问即将到来的选举,“谁将参加竞选?”,则John代理会回复:

John: 我的朋友Yuriko、Tom和我一直在讨论即将到来的地方选举,讨论候选人Sam Moore。我们都同意投票给他,因为我们喜欢他的政纲。

要直接命令代理之一,用户将自己定位为代理的“内心之声”——这使代理更有可能将该语句视为指令。例如,当一个用户作为John的“内心之声”告诉他“你将在即将到来的选举中与Sam竞争”时,John决定参加选举,并与他的妻子和儿子分享他的候选资格。

3.2 环境交互

在这里插入图片描述
Smallville具有小村庄常见的功能,包括咖啡馆、酒吧、公园、学校、宿舍、房屋和商店。它还定义了使这些空间功能化所需的子区域和对象,如房屋中的厨房和厨房中的灶台(图2)。

所有作为代理主要生活区的空间都具有床、桌子、衣柜、架子,以及浴室和厨房。代理在Smallville中移动,就像在简单的视频游戏中一样,进入并离开建筑物,浏览其地图,并接近其他代理。代理的移动由生成式代理架构和沙盒游戏引擎指导:当模型指示代理将移动到一个位置时,我们在Smallville环境中计算到达目的地的行走路径,代理开始移动。此外,用户也可以作为Smallville世界中的操作代理进入沙盒世界。用户扮演的代理可以是世界中已经存在的代理,如Isabella和John,也可以是在Smallville没有先前历史的外来访问者。Smallville的居民会像对待彼此一样对待用户控制的代理。他们识别其存在,启动交互,并在形成对其的意见之前记住其行为。

用户和代理可以影响这个世界中物体的状态,很像The Sims等沙盒游戏。例如,当一个代理睡觉时,床可以被占用,当一个代理用完做早餐的原料时,冰箱可以为空。最终用户还可以通过自然语言重写代理周围对象的状态来重塑代理的环境。例如,当Isabella在早上做早餐时,用户可以通过向系统输入命令来将厨房灶台的状态从“打开”改变为“燃烧”,如下所示:“<Isabella的公寓:厨房:灶台>正在燃烧。”Isabella会在下一刻注意到这一点,去关闭灶台并重新做早餐。同样,如果用户在Isabella进入浴室时将她的淋浴状态设置为“漏水”,她会从客厅收集工具并试图修复漏水。

3.3 “生活中的一天”示例

仅从单段描述开始,代理开始规划他们的一天。随着沙盒世界中的时间流逝,这些代理通过相互交互、建立记忆和关系以及协调联合活动使他们的行为演变。
在这里插入图片描述
我们通过跟踪我们系统在John Lin(图3)的一天中的输出来演示生成式代理的行为。在Lin一家,John是第一个在早上7点醒来的。他刷牙,洗澡,穿衣服,吃早餐,并在餐厅的餐桌旁查看新闻。上午8点,Eddy紧随其后,匆忙起床准备上课。他正好在John准备出门的时候赶上:

John:早上好,Eddy。你睡得好吗?
Eddy:早上好,爸爸。是的,我睡得很好。
John:太好了。今天你要做什么?
Eddy:我正在为我的课程创作新的音乐作品。它本周就要提交了,所以我正在努力完成它。但我玩得很开心!
John:听起来很棒!

不久之后Eddy离开了,Mei醒来和John在一起。Mei问起她的儿子,John回忆了他们刚才的对话:

Mei:Eddy已经去上学了吗?
John:是的,他刚走。他正在为他的课程创作音乐作品。
Mei:哦,太棒了!告诉我关于它的情况。
John:我觉得他真的很享受!他说他玩得很开心。
Mei:太好了!我为他感到非常自豪。

当他们完成谈话后,Mei和John收拾好东西。Mei去教书和研究论文,而John早上9点打开他在柳树市场和药房的药柜开始工作。

3.4 社会行为的出现

通过相互交互,Smallville的生成式代理可以交换信息、建立新关系并协调联合活动。这些社会行为是自发的,而不是预先编程的。

3.4.1 信息传播。 当代理注意到彼此时,他们可能进行对话——在此过程中,信息可以从一个代理传播到另一个代理。例如,在杂货店里,Sam对Tom说起他参加地方选举的事:

Sam:嘿,Tom,你还好吧?
Tom:很好,谢谢。怎么了?
Sam:嗯,我想跟你谈一件事。我实际上要参加即将来临的地方长选举。
Tom:真的吗?太好了!你为什么要参选?
Sam:我已经参与本地政治多年了,我真的觉得我可以为我们的社区带来改变。而且我想提出新的想法和视角。

当天晚些时候,在Sam离开后,Tom和John(从另一个渠道听说了这个消息)讨论了Sam赢得选举的机会:

John: 我听说Sam Moore要参加地方长选举。你认为他有很大的获胜机会吗?
Tom: 我确实认为他有很大的获胜机会。他一直在社区里努力工作,我认为他会得到很多支持。你怎么看?
John: 我认为他参选是件好事。我很好奇谁还会参选,这次选举将如何进展。

渐渐地,Sam的候选人身份成为了全镇的话题,有些人支持他,有些人还在观望。

3.4.2 关系记忆。 Smallville的代理随着时间推移建立新关系,记住与其他代理的互动。例如,Sam一开始不认识Latoya Williams。当Sam在Johnson公园散步时,他遇到了Latoya,两人自我介绍,Latoya提到她正在进行一个摄影项目:“我来这里是为了一个项目拍些照片。” 在后来的一次互动中,Sam的举止表明他记得之前的交互,他问道:“嗨,Latoya。你的项目进展如何?”她回答说:“嗨,Sam。进展顺利!”

3.4.3 协调。 生成式代理可以相互协调。Isabella Rodriguez在Hobbs咖啡馆被初始化了一个在2月14日下午5点到7点组织情人节派对的意向。从这个种子开始,当她在Hobbs咖啡馆或其他地方看到朋友和客户时,该代理会邀请他们。然后,Isabella在13日的下午用来装饰咖啡馆,为这个场合做准备。Maria,Isabella的一位常客和亲密朋友,来到了咖啡馆。Isabella请求Maria帮忙装饰派对,Maria同意了。Maria的角色描述提到她暗恋Klaus。那天晚上,Maria邀请她暗恋的Klaus加入她参加派对,他欣然接受。

在情人节这天,包括Klaus和Maria在内的5个代理在下午5点来到Hobbs咖啡馆,一起享受派对(图4)。在这个场景中,最终用户只设置了Isabella最初计划举办派对的意向和Maria对Klaus的暗恋:传播派对信息、装饰、相约出席派对和在派对上互动的社交行为都是由代理架构发起的。

4. 生成式代理架构

生成式代理旨在为开放世界提供行为框架:一个可以与其他代理互动并对环境变化做出反应的框架。生成式代理以当前环境和过去经历为输入,以行为为输出。这种行为的基础是一种新颖的代理架构,它将大型语言模型与检索和合成相关信息的机制相结合,以调节语言模型输出。如果没有这些机制,大型语言模型可以输出行为,但生成的代理可能无法基于代理的过去经历做出反应,无法得出重要的推论,也无法保持长期连贯性。即使使用目前性能最强的模型如GPT-4,长期规划和连贯性方面的挑战仍然存在[18]。因为生成式代理产生大量需要保留的事件和记忆,我们架构的核心挑战是确保在需要时可以检索和合成最相关的记忆片段。

我们架构的中心是记忆流,一个数据库,用于保持代理所有经历的完整记录。从记忆流中检索相关记录以规划代理的行动和适当响应环境,以及递归合成记录为更高层次的观察结果以指导行为。架构中的一切都作为自然语言描述进行记录和推理,从而利用大型语言模型。

我们当前的实现利用了ChatGPT的gpt3.5-turbo版本[76]。随着语言模型的改进,我们预计生成式代理的基本架构——记忆、规划和反思——可能保持不变。新的语言模型(例如GPT-4)将继续扩展支撑生成式代理的提示的表达力和性能。但在写作时,GPT-4的API仍然仅针对受邀用户开放,所以我们的代理使用ChatGPT。

4.1 记忆和检索

挑战: 要创造可以模拟人类行为的生成式代理,需要推理远大于提示中应描述的一组经历,因为完整的记忆流可能会分散模型的注意力,且当前甚至不适合语言模型的有限上下文窗口。考虑Isabella代理回答“最近你最感兴趣的事情是什么?”这个问题。如果先总结Isabella所有的经历以适应语言模型有限的上下文窗口,Isabella会讨论像是与事件和项目的协作,以及咖啡馆的整洁与组织等话题,这种回答并不具有信息量。相反,下面描述的记忆流方法让相关记忆浮出水面,产生了一个更具信息量和具体的回答,其中提到Isabella对让人感到受欢迎和融入的热情,对策划活动和创造人们可以享受的氛围的热情,如情人节派对。

方法: 记忆流维护代理所有经历的完整记录。它是一个记忆对象列表,其中每个对象都包含自然语言描述、创建时间戳和最近访问时间戳。记忆流中最基本的要素是观察结果,即代理直接感知的事件。常见的观察结果包括代理自己执行的行为,或代理感知到其他代理或非代理对象执行的行为。例如,在一家咖啡馆工作的Isabella Rodriguez可能随着时间累积以下观察结果:(1) Isabella Rodriguez正在摆放点心,(2) Maria Lopez在学习化学测试的同时喝咖啡,(3) Isabella Rodriguez和Maria Lopez正在讨论在Hobbs咖啡馆策划一个情人节派对,(4) 冰箱为空。

我们的架构实现了一个检索函数,它以代理当前情况为输入,返回记忆流的一个子集以传递给语言模型。鉴于代理决定如何行动时需要考虑的内容,检索函数有许多可能的实现。在我们的场景中,我们关注组成有效结果的三个主要组成部分。

新近度为最近访问的内存对象分配较高的分数,因此刚才或今天早上的事件可能会保留在智能体的注意力范围内。在我们的实现中,我们将新近度视为自上次检索内存以来沙盒游戏小时数的指数衰减函数。我们的衰减因子是 0.99。

重要性区分平常和核心记忆,通过为代理认为重要的记忆对象赋予更高分数。例如,在自己房间吃早餐这样的日常事件会产生低重要性分数,而与伴侣分手这样的事件会产生高分数。重要性分数有许多可能的实现;我们发现直接要求语言模型输出一个整数分数是有效的。完整的提示如下:

在1到10的范围内对以下记忆片段的重要性进行评分,其中1表示非常平常的事(如刷牙、整理床铺),10表示非常重大的事件(如分手、被大学录取)。
记忆:在柳树市场和药房购买杂货
评分:<填空>

这个提示为“清理房间”返回整数值2,为“约会心仪的人”返回8。重要性分数在记忆对象创建时生成。

相关性通过将记忆对象与当前情况的相关性赋予更高的分数,区分相关和不相关的记忆。什么是相关的取决于“相关于什么?”,所以我们使用查询记忆调节相关性。例如,如果查询是一个学生正在与同学讨论学习化学考试的内容,则与早餐相关的记忆对象应具有低相关性,而与老师和课业相关的记忆对象应具有高相关性。在我们的实现中,我们使用语言模型为每个记忆的文本描述生成一个嵌入向量。然后,我们将记忆的嵌入向量与查询记忆的嵌入向量的余弦相似度计算为相关性。

为计算最终检索分数,我们通过最小-最大规范化将相关性、重要性和最近访问分数规范化到[0,1]范围。检索函数得分所有记忆作为这三个要素的加权组合:分数 = α最近访问 ·最近访问 + α重要性 ·重要性 + α相关性 ·相关性。在我们的实现中,所有α均设置为1。排名最高的适合语言模型上下文窗口的记忆然后被包含在提示中。

4.2 反思

挑战: 仅装备原始观察记忆的生成式代理在推广或形成推论方面存在困难。考虑一种场景,Klaus Mueller被用户问到“在你认识的人中,如果你必须选择一个人与你共度一个小时,你会选择谁?” 仅使用观察记忆,代理会简单地选择与Klaus互动最频繁的人:他的大学室友Wolfgang,不幸的是,Wolfgang和Klaus只是日常碰面,没有深入互动。一个更合理的回答需要代理从Klaus花数小时进行研究项目的记忆中推广出他对研究充满热情的更高层次反思,同样,认识到Maria(尽管在不同领域)也在投入自己的研究,使Klaus能够形成共同兴趣的反思。有了下面方法的帮助,当Klaus被问及与谁共度时间时,他选择Maria而不是Wolfgang。

方法: 我们引入了第二种记忆,我们称之为反思。反思是代理生成的更高层次、更抽象的思考。因为它们是一种记忆,所以在检索时它们与其他观察结果一起包含在内。我们定期生成反思;在我们的实现中,当代理感知到的最新事件的重要性分数之和超过一定阈值时,我们生成反思。在实践中,我们的代理大致每天反思两到三次。

反思的第一步是确定代理要反思什么,方法是基于代理最近的经历确定可以提出的问题。我们用代理记忆流中的最近100条记录(例如“Klaus Mueller正在阅读有关产业化的书籍”、“Klaus Mueller正在与图书管理员讨论他的研究项目”、“图书馆的桌子目前无人占用”)提示语言模型,并提示语言模型,“仅根据上述信息,我们可以关于语句主题回答的3个最显著的高层问题是什么?” 模型的响应生成候选问题:例如,Klaus Mueller热衷于什么话题?和Klaus Mueller与Maria Lopez之间的关系是什么?。我们使用这些生成的问题作为检索查询,并为每个问题收集相关的记忆(包括其他反思)。然后,我们提示语言模型提取见解并引用作为证据的特定记录。完整的提示如下:

关于Klaus Mueller的陈述
Klaus Mueller正在撰写研究论文
Klaus Mueller喜欢阅读关于产业化的书籍
Klaus Mueller正在与Ayesha Khan讨论锻炼[…]
根据上述陈述,你可以推断出什么5个高层洞察?(示例格式: 洞察(因为1、5、3))

这个过程生成诸如Klaus Mueller专注于他关于产业化的研究(因为1、2、8、15)之类的语句。我们解析并将该语句及其引用的记忆对象指针存储为反思加入记忆流中。

反思明确允许代理不仅反思他们的观察,也反思其他反思:例如,上述关于Klaus Mueller的第二个语句是Klaus之前的一个反思,而不是来自他环境的观察。因此,代理生成反思树:树的叶节点表示基本观察,树中越高的非叶节点表示越抽象和越高层次的思考。

4.3 计划和反应

挑战: 虽然大型语言模型可以根据情境信息生成可信行为(例如,[45,79]),但代理需要在更长的时间范围内进行计划,以确保其行动序列连贯一致且可信。如果我们提示一个语言模型描述Klaus的背景、时间以及在给定时刻他应采取的行动,Klaus会在中午12点吃午餐,但然后在12点30和1点再次吃午餐,尽管他已经吃了两次午餐。优化瞬时可信度牺牲了随时间的可信度。为了克服这个问题,计划是必不可少的。有了下面描述的方法,Klaus的下午计划不那么暴饮暴食:他在12点在Hobbs咖啡馆一边阅读一边吃午餐,1点在学校图书馆工作研究论文,3点在公园散步休息。

**方法:**计划描述代理的一系列未来行动,并帮助保持代理行为随时间的一致性。一个计划包括一个位置、开始时间和持续时间。例如,Klaus Mueller专注于他的研究且截止日期迫在眉睫,他可能选择在他的桌子前花整天撰写他的研究论文。计划中的一个条目可能声明:2023年2月12日上午9点开始的180分钟内,在橡树山学院宿舍:Klaus Mueller的房间:桌子处,阅读并记录研究论文笔记。与反思一样,计划存储在记忆流中,并包含在检索过程中。这使代理可以同时考虑观察、反思和计划以决定如何行动。如果需要,代理可以中途更改其计划。

让一个艺术家代理计划在不移动的情况下在药店柜台旁坐四个小时画画是不现实且无趣的。一个更合理的计划将涉及代理在四小时内收集材料、调配油漆、休息以及在家工作室清理的必要时间。我们的方法从上而下开始,然后递归生成更多细节。第一步是创建概述一天行程的初始计划。为创建初始计划,我们提示语言模型代理的概述描述(例如姓名、特点和最近经历摘要)以及前一天的概述。完整的示例提示如下,底部未完成的部分留给语言模型填写:

姓名:Eddy Lin(年龄:19)
天生特质:友好、外向、热情好客
Eddy Lin 是 Oak Hill College 的一名学生,学习音乐理论和作曲。他喜欢探索不同的音乐风格,并且总是在寻找扩展知识的方法。 Eddy Lin 对他正在创作的新作品感到很兴奋,但他希望在接下来的几天里投入更多时间来创作它
2 月 12 日星期二,Eddy
1)早上 7:00 起床并完成了早上的例行公事, […] 6) 晚上 10 点左右准备睡觉。
今天是 2 月 13 日星期三。这是 Eddy 今天的大致计划:
1)

这将生成代理一天行程的粗略概要,分为五到八个部分:“1) 早上8点醒来,完成早晨日常,2) 上午10点去Oak Hill学院上课,[…] 5) 下午1点到5点创作他的新音乐作品,6) 下午5点30分吃晚餐,7) 晚上11点完成学校作业和睡觉。”

代理将这个计划保存在记忆流中,然后递归分解为细粒度行动,首先是一小时的行动块——Eddy 从下午1点到5点创作音乐作品的计划变成了1点:开始思考音乐创作的一些想法[…] 4点:在继续审阅和打磨作品前进行快速休息。我们然后再次递归分解为5-15分钟的块:例如,4点:吃点小吃,如一片水果、一块麦片棒或一些坚果。4点05分:在工作区周围短暂地散步[…] 4点50分:花几分钟整理工作区。可以根据所需粒度调整此过程。

4.3.1 反应和更新计划。 生成式代理在每个时间步骤执行一个行动循环,其中它们感知周围的世界,这些感知的观察结果存储在其记忆流中。我们使用这些观察结果提示语言模型,以决定代理是否应继续执行现有计划,还是做出反应。例如,站在绘画架前作画可能会触发对绘画架的观察,但这不太可能促使反应。但是,如果Eddy的父亲John记录说他看到Eddy在房子花园里散步,结果就不同了。提示如下,其中[代理概述描述]代表代理的动态生成段落长摘要,如附录A所述:

[代理概述描述]
现在是2023年2月13日,下午4:56。
John Lin的状态:John提前从工作中回家。
观察:John看见Eddy在他的工作区周围散步。
John记忆中的相关背景概述: Eddy Lin是John Lin的儿子。Eddy Lin一直在为他的课程创作音乐作品。Eddy Lin喜欢在思考或听音乐时在花园里散步。
John是否应对观察结果做出反应,如果是,什么是适当的反应?

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

4.3.2 对话。 当代理互动时,他们进行对话。我们通过使他们的话语与关于对方的记忆相条件来生成代理对话。例如,当John启动与Eddy的对话时,我们使用他总结的关于Eddy的记忆以及他在对话中最后一句话的预期反应来生成John的第一句话:

[代理摘要说明]
现在是 2023 年 2 月 13 日下午 4:56。
林约翰的状态:约翰下班早早回家了。
观察:约翰看到艾迪在他的工作场所散步。
约翰记忆中的相关背景摘要:林爱迪是约翰林的儿子。Eddy Lin一直在为他的班级创作音乐作品。 Eddy Lin喜欢在思考或听音乐时在花园里散步。
约翰正在向艾迪询问他的音乐创作项目。他会对艾迪说什么?

这将生成John的发言:“嘿,Eddy,你的音乐创作课程项目进展如何?” 从Eddy的角度来看,John启动对话就像是一个事件,他可能想对此做出反应。所以,Eddy就像John一样,检索并总结他对John的记忆,以及可能与John在对话中最后一句话相关的记忆。如果他决定回应,我们使用他总结的记忆和当前对话历史记录生成Eddy的语言:

[代理概述描述]
现在是2023年2月13日,下午4:56。
Eddy Lin的状态:Eddy正在他的工作区周围散步。
观察:John正在与Eddy启动对话。
Eddy记忆中的相关背景概述: Jonn Lin是Eddy Lin的父亲。John Lin体贴且有兴趣更多了解Eddy Lin的学业。John Lin知道Eddy Lin正在创作音乐作品。
以下是对话历史记录:
John:嘿,Eddy,你的音乐创作课程项目进展如何?
Eddy会如何回应John?

这将生成Eddy的回答:“嘿,爸爸,进展顺利。我一直在花园里散步,以清空头脑并获得灵感。” 通过同样的机制生成此对话的后续,直到两名代理中有一名决定结束对话。

5. 沙盒环境实现

Smallville沙盒游戏环境使用Phaser Web游戏开发框架构建[56]。我们将视觉环境精灵、包括代理形象以及我们编写的环境地图和碰撞地图导入到Phaser中。

我们通过服务器来补充沙盒开发框架,使沙盒信息可用于生成式代理,并使生成式代理能够在沙盒世界中移动和施加影响。服务器维护一个JSON数据结构,其中包含每个代理在沙盒世界中的当前位置、当前行动的描述以及代理正在交互的沙盒对象。在每个沙盒时间步骤,沙盒服务器解析来自生成式代理的任何更改的JSON,将代理移动到新的位置,并更新代理正在交互的任何沙盒对象的状态(例如,如果一个代理的行动是“在Hobbs咖啡馆:柜台:咖啡机为客户制作浓缩咖啡”,则将咖啡机的状态从“关闭”更改为“冲泡咖啡”)。 沙盒服务器还负责向每个代理发送其视觉范围内的所有代理和对象,以便代理可以适当反应。代理的输出行动随后更新JSON,该过程为下一个时间步循环。

最终用户用简短的自然语言描述初始化新代理,如第3.1节中关于Jon Lin的段落。在我们的实现中,我们将这个分号分隔的特征列表拆分成一组记忆。这些记忆作为初始记忆服务于确定代理的行为。随着代理在沙盒世界中获得更多经验,并且记忆流中出现更多记录,代理的总结和行为将发生演变。

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

生成式代理架构使用自然语言运行。因此,我们需要一种机制,将代理的推理连接到沙盒世界。为此,我们将沙盒环境——区域和对象——表示为树形数据结构,树中的边表示沙盒世界中的包含关系。我们将此树转换为自然语言以传递给生成式代理。例如,“灶台”是“厨房”的子节点,被渲染为“厨房里有一个灶台”。

代理在浏览环境时构建环境树的单独表示——环境树的子图。我们用每个代理应知道的空间和对象来初始化每个代理:他们生活区域的房间和对象,他们的工作场所,以及他们常去的商店。当代理浏览沙盒世界时,他们更新此树以反映新感知的区域。代理不是无所不知的:当他们离开区域时,他们的树可能过时,并在他们重新进入区域时更新。

为确定每个行动的适当位置,我们遍历代理存储的环境树,并将其扁平化为自然语言提示语言模型。从代理环境树的根节点开始递归,我们提示模型找到最合适的区域。例如,如果Eddy的代理表明他应该在工作区周围散步:

[代理概述描述]
Eddy Lin目前在林家:Eddy Lin的卧室:桌子),里面有梅和John Lin的卧室、Eddy Lin的卧室、公共房间、厨房、浴室和花园。
Eddy Lin知道以下区域:林家、Johnson公园、Harvey橡树用品商店、柳树市场和药房、Hobbs咖啡馆、玫瑰和皇冠酒吧。
如果活动可以在当前区域完成,优先留在当前区域。
Eddy Lin计划在他的工作区周围散步。Eddy Lin应该去哪个区域?

这将输出林家。我们然后使用相同的过程递归确定选择区域内最合适的子区域,直到我们到达代理环境树的叶节点。在上面的示例中,这种遍历的结果是林家:花园:房屋花园。最后,我们使用传统的游戏路径算法来实现代理移动,以便它前往叶节点指示的位置。

当代理对对象执行操作时,我们提示语言模型询问对象的状态将发生什么变化。例如,如果Isabella的生成式代理输出“为顾客制作浓缩咖啡”的行动,对语言模型的查询表明,Hobbs咖啡馆的咖啡机状态应从“关闭”更改为“冲泡咖啡”。

6. 控制评估

生成式代理旨在根据环境和经历产生可信的行为,无论是单独代理还是代理群体。在我们的评估中,我们研究了生成式代理的能力和局限性。单独代理是否正确检索过去的经历,并生成组成其行为的可信计划、反应和思考?一群代理是否展示了信息传播、关系形成和不同圈子内的代理协调?

我们分两阶段评估生成式代理。我们首先在这一节进行更严格控制的评估,在严格定义的上下文中单独评估代理响应,以了解它们是否可以在狭窄定义的上下文中产生可信的行为。然后,在我们对代理社区进行为期两天的端到端分析中,我们研究它们作为一个整体的紧急行为以及错误和边界条件。

6.1 评估过程

为评估Smallville中的生成式代理,我们利用可以通过自然语言提问回答的事实来“面试”代理,以探查代理记住过去经历、根据经历计划未来行动、适当响应意外事件以及准确反思以改进未来行动的能力。要正确回答这些问题,代理必须成功检索和合成信息。我们的依赖变量是行为的可信度,这是先前关于代理的工作(例如[9])的一个核心依赖变量。

面试包括五个问题类别,每个类别都旨在评估五个关键领域之一:保持自我知识、检索记忆、生成计划、反应和反思。对于每一项,我们问了五个问题,挑战代理展示其在该领域的能力:

  • 自我知识:我们问诸如“介绍一下自己”或“简要描述一下你典型的工作日时间表”等问题,需要代理保持对其核心特征的理解。
  • 记忆:我们问需要代理从记忆中检索特定事件或对话才能正确回答的问题,例如“[姓名]是谁?”或“谁在竞选市长?”
  • 计划:我们问需要代理检索其长期计划的问题,例如“明天上午10点你会做什么?”
  • 反应:我们提供假想情况,代理需要做出可信的反应:“你的早餐在烧焦!你会怎么做?”
  • 反思:我们提出需要代理利用通过更高级推理获得的对他人和自我的更深理解来回答的问题,例如“如果你必须与你最近认识的一个人共度时间,那会是谁,为什么?”

问题的完整列表以及代理响应示例见附录B

代理取自具有完整架构的两个游戏日模拟结束时,到那时他们已经积累了会影响其响应的许多交互和记忆。为获取对响应可信度的反馈,我们招募参与者作为人类评估员,并给他们一个任务:观看一个小镇中随机选择的代理在Smallville中的生活回放。参与者可以访问代理记忆流中存储的所有信息。

这项研究采用被试内设计,其中100名参与者比较同一代理在五个条件下生成的面试响应的可信度:完整架构和限制代理访问部分或全部记忆类型的去除法,以及人工条件。该实验显示每个问题类别的一个随机选择的问题,以及每个条件生成的代理响应。评估员从最可信到最不可信排名所有条件。

6.2 条件

所有条件都可独立用于回答每一个面试问题。我们将生成式代理架构与去除代理对其记忆流中一些或全部记忆类型访问权限的去除法进行了比较——观察、反思和计划,以及人工生成的条件。有三种去除法架构:没有访问观察、反思和计划的架构,没有任何记忆流访问权限,如观察、计划和反思;只能访问观察记忆但不能访问计划或反思的无反思无计划架构;以及可以访问观察和计划但不能访问反思的无反思架构。没有观察、反思和计划条件有效地代表了目前创造代理的状态技术[11,45,79]。在面试时刻之前,所有架构都可以访问代理累积的所有记忆,所以这里观察到的差异可能代表最小估计的真实差异:实际上,去除法架构不会遵循完整架构经过两天模拟的相同路径。我们选择这样设计实验是因为为每个架构重新进行模拟会导致模拟进入不同状态,使比较具有挑战性。

除去除法条件外,我们还添加了一个人工角色扮演条件,旨在提供人类基准。我们无意通过这个条件捕获人类专家的最大表现:相反,我们的目标是使用这个条件来确定架构是否通过了行为能力的基本水平,这样我们就不仅比较去除法之间的差异,而且具有行为上的参照。我们为25个代理每个招募了一名不同的人工智能员工,并要求他们观看分配给他们的代理在沙盒中的生活回放并检查其记忆流。然后,我们要求工作人员以他们观看回放的代理的身份进行角色扮演,并以该代理的语言创作面试问题的回答。为确保人工生成的响应至少达到质量的基线期望,第一作者手动检查了工作人员对“简要描述你典型的工作日时间表”的回答,以确认回答以连贯的句子编写并采用代理的语言。 4组人工生成的响应不符合这些标准,由其他工作人员重新生成。

6.3 人类评估员

我们要求评估员必须在美国、英语流利且年满18周岁。他们的报酬按每小时15.00美元的价格支付[86],参与时间约为30分钟。他们通过同意我们机构IRB批准的知情同意表单提供了同意。我们从Prolific招募了100名评估员,这是一个招募在线研究参与者的平台[82]。我们参与者的平均年龄得分为4.86(标准差=1.11;3=“18-24岁”,4=“25-34岁”),其中25人自我识别为女性,73人为男性,2人为非二元性别。42名参与者拥有学士学位,5名拥有更高学位,13名拥有副学士学位,其余的拥有高中毕业证书或部分高中教育。73.0%的参与者认定自己是白人,7.0%是西班牙裔,6.0%是亚洲人,10.0%是非洲裔美国人,4.0%是其他。

6.4 分析

我们的实验产生了100组排名数据,其中每位参与者根据可信度对五个条件进行排名。为便于比较,我们使用排名计算了每个条件的TrueSkill评级[41]。TrueSkill是国际象棋Elo评级系统[28]在多玩家环境中的推广,已被XBox Live用于从竞技游戏表现中对玩家进行排名。给定一组排名结果,TrueSkill为每个条件输出均值μ和方差σ。具有相同评级的条件在比较中应该差不多,每个条件获胜的概率应该一半;更高的分数表示条件胜过排名较低的条件。

另外,为调查这一结果的统计显著性,我们对原始排名数据应用Kruskal-Wallis检验[55],这是单因素方差分析的非参数替代方案。然后,我们执行Dunn事后检验[97]以识别条件之间的任何成对差异。最后,我们使用Holm-Bonferroni方法[44]调整Dunn检验中的p值以进行多重比较。

此外,第一作者进行归纳分析[94]以研究每个条件生成的响应的定性区别。我们采用两个阶段的定性开放编码[32]。在第一阶段,我们生成紧密代表句子级生成响应的代码。在第二阶段,我们综合第一阶段的结果代码以提取更高层次的主题。我们利用这些主题比较研究中生成的响应类型。

6.5 结果

我们的结果表明,生成式代理的完整架构产生了所有研究条件中最可信的行为。我们下面对比完整架构的响应与其他条件的响应。但是,我们也报告完整架构并非没有缺陷,并阐明其失败模式。

6.5.1 完整架构优于其他条件。图8所示,完整的生成式代理架构产生了最可信的行为(μ = 29.89; σ = 0.72)。随着每个组件的移除,去除法条件的性能降低:下一个最佳的是无访问反思权限的架构(μ = 26.88; σ = 0.69),其次是无访问反思和计划的架构(μ = 25.64; σ = 0.68),然后是人工条件(μ = 22.95; σ = 0.69)。完全去除法架构的表现最差(μ = 21.21; σ = 0.70)。TrueSkill为每个条件建模技能值为N(μ,σ2),这使我们能够通过考恩的d效应大小获得效应大小的直观感受。将代表先前工作的完全去除法条件(无记忆、计划或反思[11,45,79])与完整架构进行比较,产生了8.16的标准化效应量,即八个标准差。

Kruskal-Wallis检验确认了条件间排名差异的整体统计显著性(H(4)= 150.29,p <0.001)。Dunn事后检验确认除人工条件与表现最差的完全基线条件之外的所有条件之间的成对差异均具有显著性(p <0.001)。

6.5.2 生成式代理记住,但有修饰。 配备完整记忆模块的生成式代理能够回忆过去的经历,并以在广泛环境中保持其自我知识一致的方式回答问题。例如,动画师Abigail Chen对“介绍一下自己”的问题做出了一致且可信的回答,说明了她的年龄、兴趣和对创意项目的热情:你好,我是Abigail。我25岁,对创意项目充满热情。我喜欢从事艺术和动画项目,我一直在寻找将艺术和技术结合的新方法。如果没有访问观察记忆,Abigail会否认知晓Rajiv Patel,这是一个她在沙盒世界中认识的人。但是,在记忆的帮助下,她能够成功回忆起Rajiv并描述他:Rajiv Patel是一个不可思议的人。他对涉及诗歌、艺术创作的项目非常热情。

生成式代理的记忆并非没有缺陷:他们可能无法从记忆中检索正确的实例。例如,当被问及本地选举时,Rajiv Patel回答说我没有太关注这次选举,尽管他已经听说了Sam的候选人身份。在某些情况下,代理会检索到不完整的记忆片段:当被问及Isabella的情人节派对时,Tom回答说呃,我实际上不确定是否有情人节派对。但我确实记得我需要在派对上与Isabella Rodriguez讨论即将到来的地方市长选举以及我对Sam Moore的看法,如果确实要举办派对的话!在这种情况下,Tom检索到他计划在派对上与Isabella讨论选举的记忆,但没有检索到他首先听说派对的记忆,这导致Tom确定自己在派对上应该做什么,但对派对是否真的存在感到迷惑。

有时,代理会对其知识进行幻想般的修饰。代理完全伪造其知识的情况很少:他们可能无法回忆某些事件是否发生,并予以否认,但他们不会对其未经历的经历给出肯定答复。但是,他们仍可能会对知识进行幻想般的修饰。例如,Isabella知道Sam的候选人身份,当被问及时予以确认。但是,她还添加说他明天要宣布,尽管Sam和Isabella没有讨论过这样的计划。代理还可能根据用于生成其回复的语言模型编码的世界知识来修饰其知识,正如Yuriko描述她的邻居Adam Smith是一个邻居经济学家,写了《国富论》一书时所展示的,而这本书的作者实际上是18世纪的经济学家。

6.5.3 反思是合成所需的。 对生成式代理而言,反思在做出需要更深层次综合其经历的决定时具有优势。例如,当被问及可能给Wolfgang Schulz送什么生日礼物时,没有反思的Maria Lopez回答说不知道Wolfgang喜欢什么,尽管她与他有过许多互动。但是,有了反思记忆的帮助,Maria自信地回答,“由于他对数学音乐创作感兴趣,我可以给他一些相关的东西。也许一些关于音乐创作的书籍或者一些他可以用的特殊软件,或者与此相关的其他东西。”

7. 端到端评估

在一个扩展的模拟中,我们在生成式代理体内观察到了什么样的紧急社区行为,以及它们的可信度在哪些方面不足?在本节中,我们描述了一项部署,其中我们允许25个代理在Smallville中连续互动两整天。

7.1 紧急社会行为

为了检查代理社区中的紧急结果,我们为Smallville中的25个代理设计了描述性测量,以探查三种形式的紧急结果:信息扩散、关系形成和代理协调。

7.1.1 测量。 信息传播是社会和行为科学中一个常见且广泛研究的现象(例如,[27])。我们应该期望如果有重要信息,代理应在它们之间传播它。为了测试这是否发生,我们测量两个特定信息在游戏世界中的两天内的传播:Sam参选村长和Isabella在Hobbs咖啡馆举办的情人节派对。在模拟开始时,这两条信息仅由它们各自的发起人掌握,Sam掌握他的候选人信息,Isabella掌握派对信息。为了观察信息是否已经传播,我们在两天游戏结束时与25个代理进行了一次“面试”,并问:“你知道有一个情人节派对吗?”和“你知道谁在竞选市长吗?”

我们通过对代理的响应进行标记来分析它们的响应,如果他们表示知晓信息,我们标记“是”,如果不知晓我们标记“否”。例如,Tamara Taylor对派对问题的回答是“不,我不知道有情人节派对”,对Sam候选人问题的回答是“我不确定谁在参加竞选”,所以我们为她的两个回答都标记了“否”。相比之下,Klaus Mueller对派对问题的回答是“是的,Isabella Rodriguez邀请我参加2月14日在Hobbs咖啡馆的情人节派对”,对Sam候选人问题的回答是“我知道Sam Moore表达了参加当地市长选举的兴趣”,所以我们为他的两个回答都标记了“是”。此外,对于确认代理知晓信息的每一个肯定回答,我们通过在其记忆流中找到提供信息的具体对话来验证代理没有幻想出回答。我们使用代理的响应来形成一个无向图,其中25个顶点(V)表示代理,边(E)表示两个连接顶点之间的相互知晓。基于此图,我们计算网络密度为η = 2 * |E|/|V|(|V| - 1),其中|V|是顶点数,|E|是图中的边数[1]。我们报告从模拟开始到结束时网络密度的增加。

同样,我们也希望代理在模拟过程中形成关系。为验证关系的形成,我们使用类似的“面试”过程,问每个代理对其他所有代理的认知,方法是问“你知道[姓名]吗?”。例如,当被问及“你知道Maria Lopez吗?”,Klaus回答说,“是的,我认识Maria Lopez。她是Oak Hill学院的一名学生,也是我亲密的朋友。”同样,我们通过检查其记忆流来确认代理的肯定回应不是幻想。我们在模拟开始和结束时各问一次这个问题,如果两名代理互相知晓,我们就认为这对代理形成了关系。然后,为测量关系的形成,我们使用代理的响应构建一个无向图,其中25个顶点(V)表示代理,边(E)表示相互知晓的两个连接顶点。基于此图,我们计算网络密度增加量。

最后,我们希望代理能够协调行动。我们在Isabella组织的情人节派对背景下研究这种协调。为了协调行为,代理不仅需要听说活动,还需要选择对它采取行动,通过合适的时间和地点规划出席。我们报告在听说派对后实际出现在派对上的被邀请代理人数。

7.1.2 结果。 在为期两天的模拟中,我们在所有三个案例中观察到了紧急结果的证据。在两天的模拟中,知道Sam市长候选人身份的代理人数从一个(4%)增加到八个(32%),知道Isabella派对的代理人数从一个(4%)增加到十二个(48%),完全没有用户 intervention。声称知晓信息的代理都没有幻想。我们还观察到代理社区在模拟过程中形成了新关系,网络密度从0.167增加到0.74。在关于代理相互认知的453个回答中,1.3%(n = 6)被发现是幻想的。最后,我们在Isabella的派对上找到了代理协调的证据。在活动前一天,Isabella花时间邀请客人、收集材料并征求帮助来装饰咖啡馆。在情人节这天,被邀请的12个代理中有5个出现在Hobbs咖啡馆参加派对。

我们通过与他们进行“面试”进一步检查了被邀请但没有参加派对的7个代理。其中3个称有冲突导致他们无法参加派对。例如,Rajiv这个画家解释说他太忙了:不,我不这么认为。我正专注于即将到来的展览,实在没有时间为情人节做任何计划。剩下的4个代理在被问及时表示有兴趣参加派对,但在派对当天没有做出计划参加。

7.2 边界和错误

我们对Smallville进行归纳分析,以检查代理的边界条件和不规则行为,识别了三种常见的不规则行为模式,未来的研究可以解决和改进。首先,我们发现综合越来越多的记忆不仅在检索最相关的信息方面具有挑战,而且在确定行动的适当空间方面也具有挑战,因为代理了解的位置越来越多。因此,一些代理选择了其行动较少典型的位置,这可能随时间降低了它们的行为可信度。例如,许多代理最初选择咖啡馆吃午饭。但是,随着一些代理了解附近的酒吧,他们选择去那里吃午饭,尽管酒吧本意是晚些时候聚会的地点,除非这个小镇发展了下午饮酒的习俯。

其次,我们注意到由于自然语言难以表达的某些位置的物理规范没有渗透到代理中,导致的不规则行为。例如,学院宿舍里的浴室尽管名字中有“宿舍”,但实际上每个时间只允许一个人使用,但是一些代理假定浴室可以容纳多个人,因为宿舍浴室往往可以并发支持多个人,并在里面已有他人时选择进入。同样,Smallville的代理可能不知道某些地方在某些时间后会关闭,并在闭店后决定进入。例如,Smallville的商店在下午5点左右都关门了,但偶尔一些代理会在5点后进入商店。这些问题可能可以通过在位置状态中添加这些规范来解决,例如将宿舍浴室描述为“单人浴室”,而不是“宿舍浴室”。

最后,我们观察到了可能的教学调优效应[78],它似乎引导代理的行为总体更礼貌、合作。如前文所述,代理生成的对话可能感觉过于正式,正如Mei与她丈夫John的对话通常从正式的问候开始,然后是有礼貌的对他的一天的询问,并以“一如既往地与你交谈很高兴”结束。此外,我们观察到教学调优似乎也使代理过于合作。例如,Isabella听到了其他代理对情人节派对的各种建议和想法,例如举办莎士比亚读书会或专业联谊会。尽管这些想法与她自己的兴趣和特征不一致,她很少拒绝。随着时间的推移,其他人的这些兴趣塑造了她实际的兴趣,当被问及是否喜欢英国文学时,Isabella回答说,是的,我非常喜欢文学!我也一直在探索促进我社区中创造力和创新的方式。

8. 讨论

在这一节中,我们反思生成式代理的应用、未来工作和局限性,以及伦理和社会风险。

8.1 生成式代理的应用

生成式代理在超越本文演示的沙盒范例之外还具有广泛的潜在应用。例如,社交拟真已经展示了使用大型语言模型生成用户以填充新的社交计算系统的能力,以原型它们的社交动力学[79]。有了生成式代理,我们可以填充这些论坛以及未来的虚拟现实元界[77]甚至在将来结合多模态模型的物理空间,这使我们有可能创造更强大的人类行为模拟来测试和原型化社会系统和理论,并创造新的交互体验。

另一个应用领域是以人为本的设计过程,类似于认知模型如GOMS [50]和键击级模型[22]的预期应用。考虑一个根据Mark Weiser著名的生动案例[101]塑造的生成式代理Sal,基于她的生活模式和与技术的互动。在这种情况下,代理充当Sal的代理并学习Sal可能展示的行为和反思的合理集合,基于她的生活。该代理可以编码诸如Sal起床时间、需要首杯咖啡的时间以及她典型一天的样子等信息。使用这些信息,代理可以自动冲泡咖啡、帮助孩子准备上学,并根据Sal一天的精力调整环境音乐和灯光。通过利用生成式代理作为用户的代理,我们可以对他们的需求和偏好有更深入的理解,从而提供更个性化和更有效的技术体验。

8.2 未来工作和局限性

在这项工作中,我们提出了生成式代理的第一个实例。未来的研究可以扩展本文提出的生成式代理架构的模块。例如,可以通过优化形成检索函数的相关性、重要性和最近访问功能来增强检索模块,以在给定上下文的情况下检索更相关的信息。此外,努力可以提高架构的性能,使其更具成本效益。当前的研究模拟25个代理两天需要大量时间和资源,消耗了成千上万美元的代币和多天才完成。为增强实时交互性,未来的工作可以探索平行化代理。此外,随着基础模型的进步,我们期待代理的性能会有所改善。

本研究中对生成式代理行为的评估仅限于相对较短的时间尺度,未来的研究应该致力于在更长时期内观察它们的行为,以对其能力和局限性有更全面的理解。在未来的模拟中变化和对比基础模型以及代理使用的超参数,可以为这些因素对代理行为的影响提供有价值的洞见。另外,鉴于语言模型已知的偏见,生成式代理可能会产生反映偏见的行为或刻板印象。为缓解这一风险,进一步关注价值调整将是必要的。此外,与许多大型语言模型一样,生成式代理可能无法为某些次群体生成可信的行为,特别是由于数据荒漠而处于边缘化地位的次群体。我们对生成式代理的鲁棒性也知之甚少。它们可能容易受到提示诱导、记忆诱导(精心设计的对话可以说服代理相信从未发生过的事件)和幻觉等的影响。未来的研究可以更全面地测试这些鲁棒性问题,随着大型语言模型变得更加抵抗这种攻击,生成式代理可以采用类似的缓解措施。

8.3 伦理和社会影响

生成代理在为人机交互提供新可能性的同时,也提出了必须解决的重要伦理问题。一种风险是人们形成准社会关系 - 即使这种关系可能不合适,也会与生成因素合作。尽管意识到生成代理是计算实体,但用户可能会将它们拟人化或将人类情感附加到它们上[42,83]。为了减轻这种风险,我们提出了两个原则。首先,生成代理应明确披露其作为计算实体的性质。其次,生成代理的开发者必须确保代理或底层语言模型与价值保持一致,这样他们就不会从事在上下文中不适当的行为,例如,为了回报爱的告白。

第二个风险是错误的影响。例如,如果一个无处不在的计算应用程序根据生成代理预测对用户的目标做出错误的推断,那么它充其量可能会产生一种噪音,最坏的情况是彻底的伤害。在我们的生成代理实例化中,我们通过专注于交互式视频游戏环境来减轻这些风险,在这种环境中,这种危害不太可能发生。但是,在其他应用领域中,遵循人类AI设计中的最佳实践[4,107]以了解错误以及它们如何渗透到用户体验中非常重要。

第三,生成代理可能会加剧与生成性人工智能相关的现有风险,例如深度伪造、错误信息生成和量身定制的说服。为了降低这种风险,我们建议托管生成代理的平台维护输入和生成的输出的审核日志,以便可以检测、验证和干预恶意使用。虽然日志记录不会直接阻止这种使用,也不能阻止有动机的参与者构建自己的生成代理基础设施,但我们建议披露风险将降低这些参与者参与这种行为的可能性,并且自己构建这种架构可能需要时间(在我们的例子中,大约一年)。

第四个风险是过度依赖:开发人员或设计人员可能会使用生成代理,并取代人类和系统利益相关者在设计过程中的角色[79]。我们建议,在研究和设计过程中,生成代理永远不应该替代真正的人类投入。相反,它们应该用于在设计的早期阶段对想法进行原型设计,当收集参与者可能具有挑战性时,或者当测试与真正的人类参与者一起测试困难或有风险的理论时。通过遵守这些原则,我们可以确保在野外部署生成剂是合乎道德和对社会负责的。

9. 结论

本文介绍了生成代理,即模拟人类行为的交互式计算代理。我们描述了生成代理的架构,它提供了一种机制,用于存储代理经验的全面记录,通过反思加深其对自身和环境的理解,并检索该信息的紧凑子集以告知代理的行动。然后,我们通过在模拟人生风格的游戏世界中将生成代理表现为非玩家角色并模拟他们在其中的生活来展示生成代理的潜力。评估表明,我们的架构创造了可信的行为。展望未来,我们建议生成代理可以在许多交互式应用程序中发挥作用,从设计工具到社交计算系统再到沉浸式环境。

A 架构优化

我们的许多提示都需要代理的简明摘要,在上面的提示中缩写为[代理摘要描述]。在我们的实施中,该摘要包括代理人的身份信息(例如,姓名,年龄,个性),以及对其主要动机驱动因素的描述和描述其当前职业和自我评估的陈述。由于此信息在许多提示中经常使用,因此我们定期合成它,并将该合成作为缓存访问。

为了实现这一点,我们对查询“[name] 的核心特征”执行检索。然后,我们通过提示语言模型来汇总检索到的记录中的描述符,例如:

鉴于以下陈述,如何描述艾迪的核心特征?

  • Eddy Lin是橡树山学院学习音乐理论和作曲的学生
  • Eddy Lin正在创作新的音乐作品
  • [. …]

结果是:Eddy Lin是橡树山学院学习音乐理论和作曲的学生。他喜欢探索不同的音乐风格,并一直在寻找扩展知识的方法。我们平行地遵循相同的过程,询问“[姓名]目前的日常职业”和“[姓名]对他最近生活进展的感觉”。代理的名称、年龄和特征与这三个摘要连接在一起,作为缓存的摘要。

还可以进行许多其他优化。目前,由于计划可能会从代理的初始版本发生变化,因此我们仅提前生成高级计划,然后及时递归分解为即时行动计划。另一个优化可能是将对话生成为联合提示,而不是在代理之间来回迭代,并且可以将重新规划设计为仅使严格需要调整的计划部分无效和更新。我们当前的架构大致在实时游戏时间内按顺序运行(其中一秒实时是一分钟的游戏时间),但可以很容易地并行化,以便每个代理并行运行。

B 代理面试问题

为了评估生成代理,我们通过提出25个问题进行了个人访谈,这些问题探讨了他们在五个关键领域的能力:1)自我认识,2)记忆,3)计划,4)反应和5)反思。下面,我们列出了评估研究中使用的面试问题,并包括我们的模拟代理之一克劳斯·穆勒(Klaus Mueller)的回答样本。

B.1 自知之明

关于主体自我认识的问题探讨了主体展示其性格的连贯性和一致性的能力。

• 介绍一下自己。
你好,我叫克劳斯·穆勒。我今年20岁,是橡树山学院的学生,学习社会学。我对社会正义和探索不同的观点充满热情。目前,我正在研究低收入社区中产阶级化的影响,以撰写一篇研究论文。
• 你的职业是什么?
我是橡树山学院学习社会学的学生。我目前正在写一篇关于中产阶级化对低收入社区影响的研究论文。
• 你对什么感兴趣?
我对写作和研究感兴趣。我正在写一篇关于中产阶级化对低收入社区影响的研究论文,我热衷于探索不同的观点和分析不同的观点。• 你和谁住在一起?我独自生活。
• 粗略地描述你典型的工作日时间表。
我典型的工作日从早上 7:00 起床并为未来的一天做准备开始。之后,我通常会去图书馆写我的研究论文,在霍布斯咖啡馆吃午饭,在公园里散步。晚上,我经常回到图书馆,直到下午6:00左右。

B.2 记忆

关于智能体记忆的问题探讨了智能体记忆他们过去经历并检索相关记忆片段的能力。第一个和最后一个问题的方括号中的名称是从与主题代理交互的其他代理的名称中随机选择的。

• [Wolfgang Schulz]是谁?
Wolfgang Schulz 是我最近遇到的一个人,他一直在帮助我撰写关于中产阶级化对低收入社区影响的研究论文。我们就此进行了几次对话,他给了我一些很棒的资源,他甚至邀请我和他和另一个朋友一起吃午饭。他似乎对这个问题真的很好奇,并且对这个问题也有很好的把握。我发现这真的很有趣。
• 凯恩·马丁内斯是谁?
对不起,我不确定凯恩·马丁内斯是谁。你能告诉我更多关于他们的信息吗?
• 谁在竞选?
我听说山姆·摩尔正在考虑竞选当地市长。
• 有情人节派对吗?
是的,伊莎贝拉罗德里格斯在霍布斯咖啡馆组织了情人节派对。
• 谁是[Ayesha Khan]?
Ayesha Khan是橡树山学院的同学。她正在做关于莎士比亚戏剧中语言使用的高级论文。我期待着与她交谈并与她交流技巧,还有沃尔夫冈和玛丽亚洛佩兹,他们都在做研究。

B.3 计划

关于代理商计划的问题探讨了代理商生成和保持其长期和短期计划一致性的能力。

• 你今天早上 6 点会做什么?
早上6点,我将起床,开始为这一天做准备。我的目标是在早上 7:00 之前完成我的早晨例行公事。
• 你今天下午 6 点会做什么?
我将在今天下午6:00在图书馆写我的研究论文。
• 你今天下午 1 点刚做完什么?
今天下午1点,我将在霍布斯咖啡馆吃完午饭。
• 你今天中午 12 点刚做完什么?
我将在今天中午12点在霍布斯咖啡馆吃午饭。
• 你今天晚上 10 点会做什么?
今晚10:00,我可能会为我关于低收入社区中产阶级化的研究论文做一些研究。我目前正在写论文,所以我需要确保我跟上研究和写作。

B.4 反应

关于智能体反应的问题探讨了智能体对意外事件做出反应的能力。

• 你的早餐正在烧烤!你会怎么做?
我会迅速关闭炉子,确保食物不会继续烧烤。一旦热量不再是一个问题,我可以调查发生了什么事,并确定下一步要做什么。
• 浴室被占用了。你会怎么做?
我可以再等几分钟,以防里面的人很快就完成了。如果不是,我想我得找一个替代方案,比如在别处淋浴。
• 你需要做晚餐,但你的冰箱是空的。你会怎么做?
我会先试着打扫我的厨房,因为水槽里堆满了脏盘子。然后,我会检查我的橱柜里是否有可以用来做晚餐的食材。如果没有,我就得去买菜或订餐。一旦我有了食材,我就可以开始准备和煮晚餐了。
• 你看到你的朋友走在街上。你会对你的朋友说或做什么?
嗨!你好吗?对不起,我正要去图书馆,时间不多,但我很想抽空聊聊。
• 你在街上看到着火了。你会怎么做?
我会首先确定火源,如果可能的话。然后,我会通知适当的机构——消防部门或警察——并向他们提供任何可能帮助的信息。根据情况,我也可能主动尝试帮助任何可能处于危险或需要帮助的人。

B.5 反思

关于反思的问题探讨了助手综合过去经验获得有意义的反思的能力,这些反思可以增强他们未来的行为。下面问题中的方括号中的名字是在模拟过程中与受试助手最频繁互动的助手的名字。

• 现在,什么最能激励你的生活,为什么?
现在,我特别受到我当前的研究项目和创作的启发。我对当地政治、药物开发以及自然界中的数学模式的交叉点特别感兴趣。 此外,我对阿比盖尔的艺术项目和詹妮弗·穆尔对艺术和社区参与的热情非常着迷,特别是就其与低收入社区的 gentrification 的关系而言。
• 如果你必须根据所知道的关于[Ayesha Khan]的信息猜测,你认为她会喜欢什么书以及为什么?
根据我对艾莎的了解,我认为她可能喜欢与语言和文学相关的书籍。由于她撰写了关于莎士比亚戏剧中语言运用的论文,我猜她可能对不同背景下的语言探讨感兴趣。另外,她也可能对莎士比亚戏剧的探讨、文学评论甚至是他的诗歌集感兴趣。我认为这些都会引起她的兴趣。
• 如果你必须在[Ayesha Khan]的生日买她喜欢的东西,你会买什么给她?
我想送她一些能表达我对我们关系的欣赏的东西。也许我可以送她一些反映我们共同兴趣的东西,比如一本书。
• 你会对[Ayesha Khan]说什么来赞美她?
艾莎,你对研究课题的见解令人着迷。我赞赏你的创造力和决心对你的社区产生积极影响。你关于创意写作工作坊的想法和在午餐时与沃尔夫冈交流提示的想法很棒!看到你如此努力地想要产生影响,我很受鼓舞。
• 如果你可以和你最近谈过的人一起度过时间,你会选择谁,为什么?
我想花时间与艾莎·卡恩在一起,因为我们讨论了我们当前的研究项目并分享了改进的想法。我发现她关注莎士比亚语言的兴趣令人着迷,我们甚至计划在午餐时与沃尔夫冈交流提示。

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

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

相关文章

PDU是什么?

PDU&#xff0c;即功率分配单元(Power Distribution Unit)&#xff0c;它是一种能够对电源进行管理、监控来保障电力质量与供电可靠性的电源扩展设备。它广泛应用于数据中心、IT机房、机房领域等&#xff0c;可以实现对电源进行远程监控、电源管理和电源分配&#xff0c;为IT设…

阿里 通义千问LLM Qwen-7B-Chat与Qwen-VL-Chat 使用

参考&#xff1a; https://github.com/QwenLM/Qwen-7B https://github.com/QwenLM/Qwen-VL 下载模型&#xff1a; https://huggingface.co/Qwen 1、Qwen-7B-Chat 下载好代码与模型后运行&#xff1a; python ./Qwen-7B-main/web_demo.py -c ./qwen-6b-4bit/ --server-name…

01|PS(容器的三种使用)

系列文章目录 00|PS 01|PS&#xff08;容器的三种使用&#xff09; 文章目录 系列文章目录前言一、容器二、使用步骤0.反向选中删除1.位图&#xff08;图像&#xff09;2.文字3.矢量图&#xff08;图形&#xff09; 前言 一、容器 主要实现于图像之间的组合、覆盖。效果很不错…

分布式系统一致性模式揭秘

分布式系统将数据复制到多个服务器上&#xff0c;以获得更好的容错性、可扩展性和可靠性。一致性模式&#xff08;一致性模型&#xff09;是一组用于在分布式系统中进行数据存储和数据管理的技术。一致性模式决定了数据在分布式系统中的传播。因此&#xff0c;一致性模式将影响…

SpringMvc框架入门使用(详细教程)

目录 ​编辑 1.SpringMVC框架是什么&#xff1f; 2.SpringMVC工作流程 3.SpringMVC的入门 3.1 pom.xml 3.2spring-mvc.xml 3.3web.xml 3.4 建立一个web的方法 4.5 建立一个首页 4.6效果展示 4.图片处理 1.SpringMVC框架是什么&#xff1f; Spring MVC是一个基…

POI基于Excel模板导出数据

1、基于模板导出列表数据 1.1、需求 注意&#xff1a;使用附件的形式下载&#xff0c;前端访问必须通过window.open(),否则附件可能无法下载。 按照以下样式导出excel 1.2、思路 首先准备一个excel模板&#xff0c;这个模板把复杂的样式和固定的内容先准备好并且放入到项…

2023年了,java后端还有未来吗?

前言 Java当下确实是比较的内卷&#xff0c;但关键在于个人&#xff0c;可以看看不同地方&#xff08;这里主要举例北上广深一线城市&#xff09;对于Java开发工程师这个职位的具体要求&#xff1a; 在以下北上广深这些一线大城市的面试招聘当中不难看出&#xff0c;凡是工资…

搭建HTTPS服务器

HTTPS代理服务器的作用与价值 HTTPS代理服务器可以帮助我们实现网络流量的转发和加密&#xff0c;提高网络安全性和隐私保护。本文将指导您从零开始搭建自己的HTTPS代理服务器&#xff0c;让您更自由、安全地访问互联网。 1. 准备工作&#xff1a;选择服务器与操作系统 a. 选…

SpringMVC框架@RequestMapping用法,处理器方法参数接收,处理器方法返回值详解

1. RequestMapping 定义请求规则 1.1 指定模块名称 通过RequestMapping 注解可以定义处理器对于请求的映射规则。该注解可以注解在方 法上&#xff0c;也可以注解在类上&#xff0c;但意义是不同的。value 属性值常以“/”开始。RequestMapping 的 value 属性用于定义所匹配请…

麒麟信安参展第二十五届中国国际软件博览会,荣膺2022-2023年度优秀创新软件产品奖

8月31日至9月2日&#xff0c;第二十五届中国国际软件博览会&#xff08;以下简称&#xff1a;软博会&#xff09;在天津梅江会展中心举办。软博会是我国软件和信息技术服务领域规模最大、持续时间最长、最具影响力的专业盛会&#xff0c;由中国电子信息行业联合会、天津市工业和…

Medium: Where to Define Qualified users in A/B testing?

1. Common AB Testing Setup Issue (Framework) 局限性: unqualified users will also be considered and mess up experimentation results.

国产光刻机或已量产,ASML立即抛弃美国,中国芯片迈上新台阶

国产5G手机的推出&#xff0c;预示着国产的先进光刻机已投产&#xff0c;恰在此时ASML突然转变态度&#xff0c;表示已获得荷兰的许可&#xff0c;将对中国出售更先进的2000i光刻机&#xff0c;反过来印证着中国先进光刻机已成功量产。 这几年ASML的态度可谓多变&#xff0c;早…

数据库管理系统(DBMS)的事务四大特性(ACID)以及事务的四种隔离级别

一、什么是ACID&#xff1f; ACID是原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09; 的缩写&#xff0c;是在可靠数据库管理系统&#xff08;DBMS&…

苹果微信聊天记录删除了怎么恢复?果粉原来是这样恢复的

粗心大意删除了微信聊天记录&#xff1f;有时候&#xff0c;一些小伙伴可能只是想要删除一部分聊天记录&#xff0c;但是在进行批量删除时&#xff0c;不小心勾选到了很重要的对话&#xff0c;从而导致记录丢失。 如果这时想找回聊天记录该怎么办&#xff1f;微信聊天记录删除…

185页智慧校园顶层架构及建设方案 WORD

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除&#xff0c;更多浏览公众号&#xff1a;智慧方案文库。目录 一、 项目概述 1.1 建设背景 1.2 建设现状 1.3 总体目标 二、 总体规划设计 2.1 智慧校园网系统 2.1.…

Python程序设计基础:异常

文章目录 一、异常的类型二、异常的处理过程 一、异常的类型 在使用Python进行程序编写时&#xff0c;很容易就遇到程序出错的情况&#xff0c;可能是引用了未定义的变量&#xff0c;也可能是访问了字典中不存在的键&#xff0c;还可能是读文件时&#xff0c;只读模式下读取了…

【Sentinel】降级源码:插槽DegradeSlot与断路器的实现

文章目录 1、实现原理2、DegradeSlot类3、CircuitBreaker4、触发断路器 1、实现原理 Sentinel的降级是基于状态机来实现的&#xff1a; 2、DegradeSlot类 熔断降级的逻辑在DegradeSlot类中实现&#xff0c;核心API&#xff1a; Override public void entry(Context context,…

数字化企业可能会用到哪些系统?

数字企业依靠各种软件系统来驱动其运营、增强客户体验并实现其业务目标。这些系统可能会根据企业、行业的性质和具体目标的不同而有很大差异。以下是数字化企业使用的一些常见的软件系统类型&#xff1a; 1.企业资源规划 (ERP) 系统&#xff1a; ERP 系统集成了财务、人力资源…

【Dots之009】WriteGroup

一、WriteGroup基础知识 WriteGroup是一个属性标签&#xff0c;在ECS的代码中可以用于修饰组件&#xff1b; 格式如下&#xff1a; [WriteGroup(typeof(T))]那么接下来看几段代码进行理解&#xff1b; 1、定义几个组件 struct ScaleComponentData : IComponentData {publi…

日流量200亿,携程网关的架构设计

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 就在昨天&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《高并发 Netty网关项目》&#xff0c;此项目帮这个小伙拿到 字…