Generative Agents Introduction
如果我们以AGI作为最终的目标,那么在承担最终智慧能力的角色上,将发展处两个不同的流派:
- Embodied AI,无论是虚拟的还是实体的,最终目的在于做到和人类一样
- Generative Agents,类似黑客帝国中的虚拟人、西部世界中的智能NPC
我选用Generative Agents这个词,源自Joon Sung Park博士在2023年发表的一个智能NPC小镇时的研究《Generative Agents: Interactive Simulacra of Human Behavior》,以和过去传统人工设定行为模式的智能NPC作以区分。
本篇综述文章将以Joon Sung Park在今年8月刚刚作为博士毕业的答辩论文为楔子,整理Generative Agents的前世今生。Joon在Stanford 24Fall开设了一门叫做《CS 222: AI Agents and Simulations》的新课程,在课件中,Joon直言不讳地讲出了自己的愿景:
A world simulator of 8 billions.
这不仅是Joon的愿景,也是许多虚拟世界爱好者、游戏制作者、影视剧作者们的共同心愿。黑客帝国、数码宝贝……一个又一个关于虚拟世界的电影,展现了人们在这一方向上的美好幻想。我想,虚拟世界体现了一个人们对美好的幻想,因为人们知道现实是不美好的、不够理想的,因而才渴望在虚拟的世界中打造出“一个理想的世界”。
相关背景
虚拟世界的历史
人类对虚拟世界的探索由来已久,从早期的文字MUD到现代的3D开放世界,这一领域经历了数十年的演变:
- The Sims(模拟人生,2000):Maxis开发的生活模拟游戏,是虚拟人物行为模拟的里程碑作品。玩家为虚拟角色设定需求和性格,角色会根据预设规则自主行动。然而,Sims中的NPC行为本质上是基于有限状态机和需求驱动的规则系统,缺乏真正的"理解"和"创造"能力
- Second Life(第二人生,2003):Linden Lab开发的在线虚拟世界,用户可以创建虚拟化身并在其中社交、交易、建造。它展示了虚拟世界的社会性潜力,但其中的NPC仍然是脚本驱动的
- 元宇宙概念(2021-2022):Meta(Facebook)推动的元宇宙浪潮让虚拟世界再次成为热点。然而,当时的技术尚不足以支撑真正智能的虚拟居民
传统NPC行为建模方法
在Generative Agents之前,游戏和模拟中的NPC行为主要依赖以下方法:
- 有限状态机(FSM):NPC在预定义的状态之间切换(如巡逻→追击→攻击),行为模式固定且可预测
- 行为树(Behavior Tree):更灵活的决策结构,但仍需手动设计所有可能的行为分支
- 效用系统(Utility System):基于效用函数为每个行动打分,选择得分最高的行动
- GOAP(Goal-Oriented Action Planning):基于目标的规划系统,能自动搜索达成目标的行动序列
这些方法的共同局限在于:NPC的行为空间受限于开发者预先设定的规则和模式,无法产生真正意义上的涌现行为。Generative Agents的突破性贡献在于,它用大语言模型替代了这些手工规则,使虚拟角色能够基于经验进行"思考"和"决策"。
Cognitive架构
Joon Sung Park等人在论文《Generative Agents: Interactive Simulacra of Human Behavior》中提出了一套完整的认知架构,由三个核心模块组成:
Memory Stream(记忆流)
Memory Stream是整个架构的基础,它以自然语言条目的形式记录Agent的所有经历。每条记忆包含以下属性:
- 描述(Description):对事件的自然语言描述,如"Isabella Rodriguez正在咖啡店为情人节派对做布置"
- 创建时间(Creation Timestamp):记忆产生的时间
- 最近访问时间(Last Access Timestamp):记忆最后一次被检索的时间
Memory Stream的设计理念是:Agent的所有感知(观察到的事件、与他人的对话、自己的行动)都以统一的格式存入记忆流,形成一个不断增长的经验数据库。
Retrieval(检索机制)
当Agent需要做出决策时,它不可能回顾所有历史记忆——这既不现实也不必要。检索机制负责从Memory Stream中提取最相关的记忆。检索的评分基于三个维度:
- 时效性(Recency):越近期的记忆得分越高,使用指数衰减函数
- 重要性(Importance):对记忆的重要程度进行1-10的评分(由LLM判断)。日常琐事(如吃早餐)得分低,重大事件(如分手、获得新工作)得分高
- 相关性(Relevance):记忆内容与当前情境的语义相似度,通过embedding向量的余弦相似度计算
最终检索分数 = \(\alpha_{\text{recency}} \cdot \text{recency} + \alpha_{\text{importance}} \cdot \text{importance} + \alpha_{\text{relevance}} \cdot \text{relevance}\)
Reflection(反思机制)
如果Agent只是简单地存储和检索原始观察,它将缺乏对经验的高层次理解。Reflection模块周期性地对积累的记忆进行抽象和归纳,生成更高层次的洞察:
- 触发条件:当Agent的重要性分数累计超过阈值时,触发反思过程
- 生成反思问题:基于最近的记忆,让LLM生成若干值得深思的问题(如"Isabella Rodriguez最近的主要关注点是什么?")
- 产出反思结论:从Memory Stream中检索相关记忆,基于这些证据生成高层次的推断(如"Isabella Rodriguez对社区建设充满热情")
- 存回记忆流:反思结论本身也作为新的记忆条目存入Memory Stream,且具有较高的重要性分数
反思机制使Agent能够从具体事实中抽象出一般性的信念和态度,这正是人类认知中从经验到知识的升华过程。
Simulations
Smallville实验
Joon Sung Park团队构建了一个名为Smallville的沙盒环境来验证Generative Agents的能力。Smallville是一个类似《模拟人生》的小镇,包含咖啡店、公园、住宅、学校等场所。
实验设置:
- 25个Generative Agents:每个Agent有独立的身份背景(如"Isabella Rodriguez是Hobbs Cafe的老板,热衷于让社区变得更加美好")
- 模拟周期:持续两天的虚拟生活
- 交互方式:Agent自主地规划日程、在镇中移动、与他人对话、形成关系
涌现行为案例
实验中观察到了多个令人惊叹的涌现行为——这些行为并非预先编程,而是Agent基于记忆和推理自然产生的:
- 信息扩散:当一个Agent告诉另一个Agent关于情人节派对的消息时,这个消息通过Agent之间的对话逐渐在整个社区中传播开来
- 社交关系演化:两个此前不认识的Agent在多次偶遇和对话后,逐渐建立了友谊
- 协调行为:多个Agent在没有中央协调的情况下,自发组织了情人节派对的筹备工作——有人负责布置场地,有人负责邀请朋友
- 日程调整:Agent会根据新获得的信息调整自己的日程(例如得知派对时间后,修改当天的计划以便参加)
评估方法
论文采用了多种评估方式来验证Generative Agents的行为可信度:
- 人类评估:让人类评估者判断Agent的行为是否"像人类一样"合理
- 消融实验(Ablation Study):分别移除记忆检索、反思、规划等模块,观察行为质量的下降程度。实验表明,移除任何一个模块都会显著降低行为的可信度
- 涌现行为分析:定性分析Agent群体中出现的协调行为和社会动态
构建
技术栈
构建一个Generative Agents系统需要以下核心技术组件:
- 大语言模型(LLM):作为Agent的"大脑",负责生成行动计划、对话内容和反思。原论文使用ChatGPT (GPT-3.5-turbo),当前可使用GPT-4、Claude等更强大的模型
- 记忆系统: - 使用向量数据库(如ChromaDB、FAISS)存储记忆的embedding表示 - 实现基于recency-importance-relevance的三维检索算法 - 支持反思记忆的生成和存储
- 环境接口: - 定义虚拟世界的地图、场所和物品 - 实现Agent的移动、交互和感知逻辑 - 管理时间推进和事件触发
- Agent调度器:协调多个Agent的并发行动和交互
构建挑战
在实际构建Generative Agents系统时,面临以下主要挑战:
- 成本问题:每个Agent的每次决策都需要调用LLM,25个Agent运行两天的模拟消耗了数千次API调用,成本极高
- 延迟问题:LLM的推理延迟使得实时模拟难以实现,需要在响应速度和行为质量之间权衡
- 记忆管理:随着模拟时间的增长,Memory Stream会不断膨胀,检索效率和相关性维护成为挑战
- 行为一致性:确保Agent的长期行为与其设定的性格和背景保持一致,避免"人设崩塌"
- 规模化:从25个Agent扩展到Joon所期望的"80亿人模拟器",在架构和算力上都面临巨大挑战
- 评估困难:缺乏标准化的指标来衡量虚拟Agent行为的"真实感"和"合理性"
价值和意义
Joon对于Generative Agents的价值和意义讨论主要在于社会角度。