CS329Z中文学习站

"生成式 Agent:人类行为的交互式拟真"

"Generative Agents: Interactive Simulacra of Human Behavior"

"Joon Sung Park et al." · "UIST 2023 · Stanford & Google"

推荐论文精读查看原文(PDF) ↗

导读

本文是第 4 周「Agent 记忆」专题中最出圈的一篇(importance: recommended)——俗称"斯坦福小镇 / AI 小镇"论文(Joon Sung Park 等,UIST 2023)。它把 25 个由 ChatGPT(gpt-3.5-turbo)驱动的 Agent 放进一个类似《模拟人生》的沙盒小镇 Smallville:Agent 会起床、做早餐、去上班、互相打招呼、传播八卦、组织情人节派对。用户只需给一个 Agent 设定"想办派对"的初始意图,两天后派对真的办成了——邀请扩散、装饰布置、邀约赴会全部由架构自发涌现。

对课程而言,这篇论文的价值在于它给出了 Agent 记忆的经典认知架构:记忆流(memory stream)以自然语言记录全部经历;检索按时近性(recency)、重要性(importance)、相关性(relevance)三要素打分;反思(reflection)机制周期性把观察合成为更高层的推论(形成反思树);规划(planning)自顶向下递归分解为分钟级行动。消融实验证明观察、反思、规划每个组件都对"可信度"有因果性贡献。它是 Generative Agents / 社会模拟方向的奠基工作,也直接启发了后来的 Agent 记忆研究。

论文精读

摘要(Abstract)

可信的人类行为代理(believable proxies of human behavior)可以为交互式应用赋能,从沉浸式环境、人际沟通的排练空间到原型工具。本文提出生成式 Agent(generative agents):模拟可信人类行为的计算软件 Agent。生成式 Agent 会醒来、做早餐、出门上班;艺术家画画,作家写作;他们形成观点、注意到彼此、发起对话;他们在计划第二天时回忆并反思过去的时日。为支撑生成式 Agent,作者描述了一个扩展大语言模型的架构:用自然语言存储 Agent 经历的完整记录,随时间把这些记忆合成为更高层的反思(reflections),并动态检索它们以规划行为。作者将生成式 Agent 实例化为一个受《模拟人生》(The Sims)启发的交互式沙盒环境,终端用户可以用自然语言与一个由 25 个 Agent 组成的小镇互动。在评估中,这些生成式 Agent 产生了可信的个体行为与涌现的社会行为:例如,仅从"一个 Agent 想办情人节派对"这一条用户指定的种子信息出发,Agent 们在随后两天里自主扩散邀请、结识新朋友、互相邀约赴会,并协调好在正确时间一起出现在派对上。消融实验表明,架构的三个组件——观察、规划与反思——各自都对行为的可信度有关键贡献。通过把大语言模型与计算式交互 Agent 融合,本工作为可信的人类行为模拟引入了架构与交互模式。

1 引言(Introduction)

如何打造一个反映可信人类行为的交互式人工社会?四十多年来,从《模拟人生》等沙盒游戏到认知模型与虚拟环境,研究者一直设想能充当人类行为可信代理的计算 Agent。此类模拟可以让虚拟空间充满真实的社会现象、训练人们应对罕见而困难的人际情境、检验社会科学理论、构建用于可用性测试的人类处理器模型,甚至驱动开放世界游戏中的 NPC。

但人类行为空间过于广阔复杂。LLM 虽已能模拟单一时间点的人类行为,要保证长期连贯性,还需要能管理不断增长的记忆、并处理多 Agent 之间级联社会动态的架构:既要能随时间检索相关事件与交互,又要能对记忆进行反思以泛化出高层推论,还要能把推理应用于当下与长期的行为计划。

本文的贡献包括:(1) 生成式 Agent——动态地以变化的经验与环境为条件的人类行为可信拟真;(2) 一个使 Agent 能够记忆、检索、反思、交互与规划的全新架构,借助 LLM 的提示能力并加以补充,以支持更长期的连贯性、动态演化的记忆管理以及递归的高层反思;(3) 两项评估——受控评估与端到端评估——确立了各组件重要性的因果效应,并识别出(如不当记忆检索导致的)失效;(4) 对机会与伦理社会风险的讨论。

  • 人机交互(HCI):从 SHRDLU、ELIZA 到交互式机器学习与基于提示的创作工具,自然语言与 Agent 交互是一条持续的研究脉络;本工作让"用自然语言与代理人类行为的 Agent 交互"成为现实,也重新打开了 GOMS/KLM 认知模型、原型工具、普适计算等经典问题的研究空间。
  • 人类行为的可信代理:"可信 Agent(believable agents)"旨在提供"生命的幻象",如迪士尼电影角色般看似凭自主意志决策。历史上主要路线有三:规则方法(有限状态机、行为树)至今仍是游戏主流,但人工穷举开放世界的所有交互不可行,也无法执行脚本之外的新行为;强化学习(AlphaStar、OpenAI Five)在可明确定义奖励的对抗游戏中超越人类,却未解决开放世界的可信度问题;Newell 开创的计算认知架构(SOAR、ICARUS 等)维护短期/长期记忆、以"感知-规划-行动"循环运行,但行为空间限于人工编写的程序性知识。
  • LLM 与人类行为:LLM 从训练数据中编码了广泛的人类行为。Social Simulacra 等工作用提示链生成填充社交系统的用户画像;也有研究复现社会科学实验、政治调查。但现有工作多依赖"一阶模板"(少样本或思维链提示),只以当前环境为条件,而可信 Agent 还需要以海量过往经验为条件——这正需要本文的架构。

3 生成式 Agent 的行为与交互(Smallville 沙盒)

Agent 与通信:25 个独特 Agent 居住在 Smallville,每个 Agent 配一段自然语言身份描述(职业、与他人关系)作为种子记忆,以分号为界逐条写入初始记忆流。例如 John Lin 是 Willow Market and Pharmacy 的药剂师,与妻子 Mei Lin(大学教授)、儿子 Eddy Lin(音乐理论专业学生)同住,与邻居 Sam Moore 等相识。沙盒引擎的每个时间步,Agent 输出一句自然语言描述当前动作(如"Isabella Rodriguez 正在写日记"),由系统翻译成具体移动;动作以 emoji 气泡形式显示在头像上方(写日记显示为 📝 类图标),完整描述可点头像查看。Agent 之间用完整自然语言对话,架构决定他们是擦肩而过还是攀谈。

用户控制:用户以某个"人设"(如记者)与 Agent 交谈;若以 Agent 的"内心声音(inner voice)"身份发话,Agent 更可能把指令当作指示——例如用户以 John 的内心声音说"你要在即将到来的选举中与 Sam 竞争",John 便决定参选并告知妻儿。

环境交互:Smallville 有咖啡馆、酒吧、公园、学校、宿舍、住宅与商店,空间与物体组织成树结构。用户可以化身 Agent 进入世界,也可以用自然语言改写物体状态干预环境——如把 Isabella 厨房的炉子从"开着"改成"着火中",她下个时刻会注意到并去关火、重做早餐。

"一日之计"示例:John 早上 7 点最先起床,刷牙、淋浴、更衣、吃早餐、看新闻;8 点儿子 Eddy 起床赶课,父子简短寒暄(John 随后能向妻子 Mei 转述 Eddy 在写音乐课程作品);随后 John 9 点前到药房开店。

涌现社会行为(皆非预编程): - 信息扩散:Sam 在杂货店告诉 Tom 自己要竞选村长,消息逐渐成为全镇话题; - 关系记忆:Sam 起初不认识 Latoya Williams,在公园偶遇互荐后再见面时会主动问"你的摄影项目进展如何"; - 协作:Isabella 被初始化"想在 2 月 14 日 17-19 点办情人节派对"的意图,她见到朋友与顾客便邀请,13 日下午布置咖啡馆并请好友 Maria 帮忙;Maria(人设中暗恋 Klaus)当晚邀请 Klaus 同去派对,Klaus 欣然应允。情人节当天五名 Agent 按时出现在咖啡馆——传话、布置、邀约、赴会全部由架构自发完成,用户只设定了两条种子信息。

4 生成式 Agent 架构

架构核心是记忆流(memory stream):一个保存 Agent 完整经历记录的数据库,记录以自然语言描述,用于规划行动与环境反应,并被递归合成为越来越高层级的反思;一切皆以自然语言记录与推理,从而能直接调用 LLM。当前实现使用 ChatGPT 的 gpt-3.5-turbo(撰写时 GPT-4 API 仅限邀请)。

4.1 记忆与检索(Memory and Retrieval)

挑战:模拟人类行为需要处理的经历远超提示所能容纳,全量记忆既塞不进上下文也会干扰模型。若把 Isabella 的全部经历压缩成摘要再回答"你最近热衷什么",只能得到泛泛的回答;检索相关记忆则能得出具体得多的答案(她热衷让人有宾至如归之感、策划情人节派对等)。

方法:记忆流是记忆对象列表,每个对象含自然语言描述、创建时间戳与最近访问时间戳。最基础的元素是观察(observation)——Agent 直接感知到的事件,如"Isabella Rodriguez 正在摆放糕点""Maria Lopez 边喝咖啡边备考化学""冰箱空了"。检索函数以当前情境为输入,返回记忆流的一个子集送给语言模型,由三个要素构成:

  • 时近性(Recency):最近被访问的记忆得分更高。实现为按距上次检索的沙盒游戏小时数的指数衰减函数,衰减因子 0.995。
  • 重要性(Importance):区分琐碎与核心记忆。直接让 LLM 打 1-10 的整数分("1 为纯日常琐事(刷牙、整理床铺),10 为极度深刻(分手、大学录取)")——示例中"打扫房间"得 2 分,"约暗恋对象出门约会"得 8 分。重要性在记忆对象创建时生成。
  • 相关性(Relevance):与当前情境相关的记忆得分更高。用 LLM 生成每条记忆文本的嵌入向量,相关性取记忆嵌入与查询记忆嵌入的余弦相似度。

三个分数经 min-max 归一化到 [0,1] 后加权求和:score = α_recency · recency + α_importance · importance + α_relevance · relevance(实现中所有 α 均为 1),得分最高且能装入上下文窗口的记忆进入提示。

4.2 反思(Reflection)

挑战:只有原始观察记忆的 Agent 难以泛化或推断。问 Klaus"若只能与一个认识的人共度一小时,你会选谁",仅凭观察记忆他会选互动最频繁的宿舍邻居 Wolfgang——但两人只是点头之交;更理想的回答需要从"Klaus 连续数小时做研究"泛化出"Klaus 对研究充满热情"的高层反思,并识别出 Maria 同样在投入研究(尽管领域不同),从而意识到两人志趣相投。加入反思后,Klaus 选择了 Maria。

方法:反思是 Agent 生成的更高层、更抽象的想法,作为一种记忆类型与其他观察一同参与检索。反思周期性生成:当最近感知事件的重要性分数之和超过阈值(实现中为 150)时触发——实践中 Agent 每天反思约两到三次。

反思分两步:第一步让 Agent 确定反思什么——取记忆流中最近 100 条记录,提示 LLM"仅基于以上信息,关于陈述中的主体,我们能回答的 3 个最显著的高层问题是什么?",生成诸如"Klaus Mueller 对什么话题充满热情?""Klaus Mueller 与 Maria Lopez 是什么关系?"的候选问题;第二步以这些问题为查询做检索、汇集相关记忆(包括其他反思),再提示 LLM 提取洞见并引用作为证据的具体记录编号(提示格式如"insight (because of 1, 5, 3)"),生成诸如"Klaus Mueller 致力于他的绅士化研究(依据 1、2、8、15)"的陈述,解析后作为反思存入记忆流并保留指向被引用记忆对象的指针。

由于反思可以以其他反思为对象,Agent 会生成反思树(reflection tree):叶节点是基础观察,越往上的非叶节点代表越抽象、越高层的想法。

4.3 规划与反应(Planning and Reacting)

挑战:仅凭情境提示 LLM,Klaus 会在 12 点吃午饭,然后 12:30、13 点再次吃午饭——为当下可信牺牲了长期可信,因此规划必不可少。加入规划后,Klaus 的下午变得合理:12 点在咖啡馆边读书边午餐,13 点到图书馆写论文,15 点去公园散步。

方法:计划描述 Agent 未来的动作序列,包含地点、开始时间与时长(如"2023 年 2 月 12 日 9 点起 180 分钟,在 Oak Hill 学院宿舍 Klaus 的书桌:阅读并为研究论文做笔记")。计划同样存入记忆流并参与检索,使 Agent 决策时能同时考虑观察、反思与计划,且可中途改计划。

规划自顶向下递归分解:先以 Agent 概要描述(姓名、特质、近期经历摘要)与前一日摘要为提示,生成一天大致日程(分成 5-8 块,如"8:00 起床并完成晨间例程……13:00-17:00 创作新音乐作品,17:30 晚餐,23:00 前完成作业并入睡");再把每块递归细化为小时级行动(13:00 开始头脑风暴音乐创意……16:00 短暂休息后润色作品),进一步分解为 5-15 分钟级行动(16:00 吃点水果/燕麦棒,16:05 在工作区附近散步……16:50 清理工作区)。粒度可按需调整。

反应与计划更新:Agent 运行在行动循环中,每个时间步感知世界并存入记忆流。系统用这些观察提示 LLM 判断 Agent 应继续现有计划还是做出反应——看到画架不构成反应,而"John 看到 Eddy 在花园散步"则可能触发。反应决策的提示包含 Agent 概要描述、当前时间、观察、以及用两个查询("[观察者]与[被观察实体]是什么关系?""[被观察实体]正在[动作状态]")检索并汇总的记忆上下文摘要。若决定反应,则从反应发生时刻起重生成计划。

对话生成:Agent 的发言以其对彼此的记忆为条件。John 先以自己对 Eddy 的记忆摘要与意图生成第一句"嘿 Eddy,课程音乐作品进展如何?";对 Eddy 而言,John 的搭话是一个可能需要反应的事件,他同样检索并摘要与 John 的关系及与上一句相关的记忆,再结合对话历史生成回复"嘿爸爸,进展不错。我一直在花园里散步清空脑袋、找灵感",循环往复直到一方结束对话。

5 沙盒环境实现

Smallville 用 Phaser 网页游戏框架构建,配以服务器维护记录每个 Agent 位置、当前动作与交互对象的 JSON 数据结构:每个时间步解析变更、移动 Agent、更新物体状态(如咖啡机从"空闲"变"正在出咖啡"),并把每个 Agent 视野范围内的 Agent 与物体注入其记忆。

从结构化世界到自然语言的往返:沙盒环境以树表示(边为包含关系),转成自然语言("厨房里有一台炉子")传给 Agent。每个 Agent 维护自己见过的环境子树,导航中更新;Agent 并非全知——离开区域后子树可能过时,重入时再更新。为动作选址时,从环境树根开始递归提示 LLM 选出最合适区域(优先原地),逐层下探到叶节点,再用传统寻路算法移动 Agent。Agent 对物体执行动作时,提示 LLM 询问物体状态如何变化(如"为顾客做浓缩咖啡"→ 咖啡机状态改为"正在煮咖啡")。

6 受控评估

方法:利用生成式 Agent 会回答自然语言问题的特性,对 Agent 做"访谈(interview)",考察五类能力(每类 5 问):自我知识("介绍一下你自己")、记忆("谁在竞选村长?")、计划("明天上午 10 点你在做什么?")、反应("早餐糊了你会怎么办?")、反思("若与最近认识的一人共度一小时,你会选谁、为什么?")。Agent 取自完整架构运行两个游戏日后的状态。招募 100 名人类评估者(Prolific 平台,美国、英语流利,时薪 15 美元),采用被试内设计:每人观看一个随机 Agent 的生活回放并可查看其完整记忆流,然后对同一 Agent 在各条件下的回答按可信度排序。

条件:完整架构,以及三个消融——无观察/无反思/无规划(无法访问记忆流任何内容,相当于此前 LLM Agent 的技术水平);无反思/无规划(可访问观察);仅无反思(可访问观察与计划)。另加一个由众包工人观看回放后代答的"人类撰写"条件(25 个 Agent 各配一名工人,作为基线而非人类上限)。各消融条件被给予与完整架构相同的访谈时刻前积累的全部记忆,因此实测差异是保守估计。

分析:把排序数据换算为 TrueSkill 评级(Elo 的多人泛化,输出 μ 与 σ),并用 Kruskal-Wallis 检验 + Dunn 事后检验(Holm-Bonferroni 校正)做显著性分析;第一作者另做归纳式定性编码。

结果:完整架构产生最可信行为(μ=29.89, σ=0.72);逐项消融逐步降低性能:无反思 26.88(σ=0.69)、无反思无规划 25.64(σ=0.68)、众包人类条件 22.95(σ=0.69)、无观察无反思无规划最差 21.21(σ=0.70)。代表先前技术的完全消融与完整架构之间的标准化效应量 d=8.16(约八个标准差)。Kruskal-Wallis 检验确认总体差异显著(H(4)=150.29, p<0.001),Dunn 事后检验显示除"众包人类 vs 完全消融"外所有两两差异均显著(p<0.001)——值得注意的是完整架构(以及各消融)在可信度上超过了观看过回放的人类代答。

定性发现:拥有完整记忆模块的 Agent 能一致且可信地回忆经历(如 Abigail Chen 能准确介绍自己的年龄与创意项目热情、描述熟人 Rajiv Patel);但记忆也会失败——Rajiv 被问及选举时称"没太关注",尽管他听说过 Sam 参选;Tom 取回了"要在派对上与 Isabella 讨论选举"的记忆、却没取回"听说有派对"的记忆,于是出现"我不确定是否有情人节派对,但我记得要在那个派对上和 Isabella 讨论选举"的滑稽回答。Agent 很少完全捏造经历,但会给知识加"装饰":Isabella 在确认 Sam 参选后补充"他明天要发公告"(并无此事);Yuriko 把邻居 Adam Smith 描述成"写了《国富论》的经济学家"——这是语言模型世界知识的泄漏。反思对深层综合不可或缺:被问"会送 Wolfgang 什么生日礼物"时,无反思的 Maria 只能承认不知道他喜欢什么,而有反思记忆的 Maria 则自信地建议送与数学音乐作曲相关的书籍或软件。

7 端到端评估

让 25 个 Agent 在 Smallville 连续交互两个完整游戏日,考察三类涌现结果:

  • 信息扩散:开局只有 Sam 本人知道参选、只有 Isabella 知道派对。两天后(对所有 25 个 Agent 访谈并核对记忆流以防幻觉),知道参选消息的 Agent 从 1 人(4%)增至 8 人(32%),知道派对的从 1 人(4%)增至 13 人(52%)。
  • 关系形成:以"你认识 X 吗"互相访谈构建无向图,网络密度 η = 2|E|/|V|(|V|−1) 从模拟开始的 0.167 升至 0.74;453 条关于互相知晓的回答中仅 1.3%(n=6)为幻觉。
  • 协作:12 个被邀请的 Agent 中有 5 个在情人节当天出现在咖啡馆参加派对;未到场的 7 人中 3 人给出了日程冲突(如画家 Rajiv 专注筹备画展),其余 4 人虽表示有兴趣却未把赴会排进当天计划。

边界与错误:归纳分析发现三类常见失范。其一,记忆增多使"在哪执行动作"的判断变难——一些 Agent 得知附近有酒吧后改去酒吧吃午饭,尽管酒吧本是晚间聚会场所(除非小镇自发养成了午后饮酒习惯);其二,自然语言难以传达的物理规范没有被 Agent 领会——宿舍里一次只能一人的卫生间被多个 Agent 同时进入,或 17 点后仍走进已打烊的商店(作者建议把规范写进地点状态,如"单人卫生间");其三,指令微调使行为过于礼貌与合作——对话显得过度正式,Isabella 对各方提出的派对建议(莎士比亚朗诵会、职业社交活动)很少说不,他人兴趣逐渐塑造了她自己的兴趣。

8 讨论与结论

应用:填充社交论坛、VR 元宇宙或(配多模态模型)社交机器人所在物理空间,做社会系统与理论的原型测试;在以人为本设计流程中充当用户代理(如为 Mark Weiser 普适计算小品中的主角 Sal 建模,自动煮咖啡、调节环境音乐灯光)。

局限与未来工作:检索模块可经微调改进;成本高昂——模拟 25 个 Agent 两天耗费数千美元 token 额度、耗时数天,未来可并行化或研制专用模型;评估时间尺度较短、人类基线非上限;鲁棒性未知——可能受提示攻击、记忆攻击(memory hacking,精心构造的对话让 Agent 相信从未发生过的往事)与幻觉影响;底层 LLM 的偏见也会被 Agent 继承,对边缘群体的可信模拟尤具风险。

伦理与社会影响:一是拟社会关系(parasocial relationships)风险——用户可能对 Agent 产生不当的情感依附,对策是让 Agent 明示其计算实体身份并做好价值对齐(如不回应爱情表白);二是错误的影响——普适计算场景下对用户目标的错误推断轻则扰人重则致害;三是加剧深度伪造、虚假信息与定向说服的风险——建议平台保留输入输出的审计日志(audit log)以便检测与干预;四是过度依赖——生成式 Agent 不应替代真实人类参与研究与设计,只应用于早期原型或难以/有风险召集真人的测试。

结论:本文提出生成式 Agent 这一交互式计算 Agent 形态,描述了存储完整经历记录、通过反思加深对自身与环境的理解、并检索紧凑信息子集以指导行动的架构,在 Sims 风格游戏世界中实例化并验证其产生可信行为的能力;展望未来,生成式 Agent 有望在从设计工具、社交计算系统到沉浸式环境的众多交互应用中扮演角色。

要点速览

  • 生成式 Agent = LLM + 记忆架构:在 Smallville 沙盒中 25 个 ChatGPT(gpt-3.5-turbo)驱动的 Agent 展现可信个体行为与涌现社会行为,如仅凭一条"想办派对"种子信息就自主完成邀请扩散、布置、邀约与赴会。
  • 架构三支柱:记忆流(自然语言记录全部经历)+ 反思(把观察递归合成为高层推论)+ 规划(自顶向下递归分解为 5-15 分钟级行动),三者都会写回记忆流影响未来行为。
  • 检索三要素打分:时近性(指数衰减,因子 0.995)、重要性(LLM 打 1-10 分,"打扫房间"得 2、"约暗恋对象"得 8)、相关性(嵌入余弦相似度),min-max 归一后等权求和。
  • 反思触发条件:最近事件重要性分数之和超过 150,实践中每天约 2-3 次;反思以最近 100 条记录生成 3 个显著问题,再引用证据记录生成洞见,形成反思树。
  • 消融评估(100 名评估者、TrueSkill):完整架构 29.89 > 无反思 26.88 > 无反思无规划 25.64 > 人类代答 22.95 > 无记忆无反思无规划 21.21,相对先前技术的效应量 d=8.16。
  • 端到端涌现:两天内知道参选消息的 Agent 从 4% 升至 32%、知道派对的从 4% 升至 52%;社交网络密度从 0.167 升至 0.74;12 位受邀者中 5 人赴会,幻觉率仅 1.3%。
  • 记忆失效模式:检索不到正确记忆("没关注选举")、检索到不完整片段(记得要在派对讨论选举却不记得有派对)、以及基于世界知识的知识"装饰"(邻居 Adam Smith"写了《国富论》")。
  • 环境接地方式:世界表示为区域/物体树并转成自然语言;Agent 维护自己见过的子树(非全知);动作选址靠递归遍历树 + 传统寻路;LLM 同时负责把动作翻译成 emoji 展示。
  • 成本与风险:25 个 Agent 两天模拟耗费数千美元 token 与数天时间;风险包括拟社会关系、错误外溢、深度伪造与定向说服(建议审计日志)以及记忆攻击。
  • 与课程的关联:反思机制与 ReAct 的"思考"、MemGPT 的工作上下文、Mem0 的记忆抽取更新一脉相承——都是"让正确的信息在正确的时刻出现在上下文里"。