
“斯坦福小镇”论文调研

闻名一时的“斯坦福小镇”,源自斯坦福大学团队2023年4月7日发表的一篇论文:《Generative Agents: Interactive Simulacra of Human Behavior》,旨在通过大模型创建一个反应人类行为的人工社会。
开源代码:Github
Smallville概要
场景构建
这篇工作构建了一个名为 Smallville 的小镇场景的沙盒游戏环境。小镇由多个常见的场所构成(如公寓、咖啡厅、学校等);每个场所包含多种子场所,例如家庭住所中包含卫生间、厨房、卧室等;每个子场所中又包含一些功能型部件,例如书柜、桌子等。
人物设置
这篇工作使用25个生成式代理(Generative Agents)作为小镇中的居民,每一个Agent只用一段自然语言描述来初始化,以描述身份,包括职业、与其他Agent的关系等,并在模拟开始时封装到对应Agent的记忆中。这就是给每个代理人所有的输入了。例如,其中的角色John Lin的初始化描述如下:
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.
翻译成中文如下:
John Lin是柳树市场和药房的店主,他热衷于帮助别人。他总是想方设法让顾客更容易地获得药物;John Lin与妻子Mei Lin和儿子Eddy Lin 住在一起,Mei Lin是一名大学教授,Eddy 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比较了解。
Agent与环境的交互
首先,每个Agent会生成描述他们当前动作的自然语言,例如“Isabella Rodriguez is drinking coffee”, 然后他们将其转换为影响沙盒游戏环境的具体动作,并自动生成表情符号来抽象表达其行为。Agent的动作可以影响游戏世界中物体的状态。
Agent与Agent的交互
Agent之间的交互通过自然语言对话的方式进行。当他们看到另一个Agent时,他们会首先决定是否要进行对话,如果他们决定对话,就会生成自然语言对话,例如,当伊莎贝拉和汤姆讨论市长竞选时的对话如下:
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.
翻译:
伊莎贝拉:我还在权衡我的选择,但我一直在和萨姆·摩尔讨论选举事宜。你对他有什么看法?
汤姆:说实话,我不喜欢萨姆·摩尔。我觉得他脱离了社区,也不把我们的最大利益放在心上。
用户与Agent的交互
用户也可以通过以下三种方式与Agent进行交互:
- 对话——用户可以通过自然语言指定Agent其应该被视为的角色与该Agent交互。例如,如果用户指定他们是新闻记者,并询问他们谁在参与在Smallville举行的选举,伊莎贝拉就会回答:“我听说Sam正在竞选公职”。用户也可以扮演Agent内心的声音,例如,如果用户告诉John他现在正在竞选公职,那么John就更有可能参与选举并与家人分享他的候选资格。
- 改变环境——用户也可以改变环境的状态。例如,用户如果点燃了伊莎贝拉的吐司,伊莎贝拉可以灭火并重新烤制她的吐司。
- 化身(embodiment)——用户可以直接化身为已经存在于这个世界中的Agent,例如John,来实际控制Agent,或者作为外部访客加入。

示例:林家的一个早上
作为个体,生成式Agent会制定日常计划,这些计划会反映他们的经历;执行这些计划,并在适当的时候做出反应、或重新计划。
林家是一个三口之家,目前林梅是一名大学教授,父亲John是当地药店的一名资深柜员,儿子Eddy是大学里学习音乐理论的学生。John早上6点起床,刷牙、洗枣、做早餐,其他家庭成员也纷纷起床,然后相互交互,到8点前往各自的去处。他们早上生成了如下的对话:
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!
翻译:
约翰:早上好,艾迪。你睡得好吗?
艾迪:爸爸早上好。是的,我睡得很好。
约翰:很好。你今天在做什么?
艾迪:我正在为我的班级创作一首新的音乐作品。这周就要交了,所以我正在努力完成它。不过我玩得很开心!
约翰:听起来很棒!
这段对话结束后,林梅起床了,然后林梅和丈夫John又开始了一段对话,这里John回忆起了他与儿子先前的对话:
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.
翻译:
梅:艾迪已经去上学了吗?
约翰:是的,他刚走。他正在为他的班级创作一首乐曲。
梅:哦,太棒了!跟我说说吧。
约翰:我觉得他很喜欢!他说他玩得很开心。
梅:太好了!我为他感到骄傲。
生成式Agent展现出了新兴的社会动态(Emergent social dynamics)
通过Agent彼此的交互与信息的交换,新的关系被形成、信息融合、合作(Coordination)诞生。
- 信息融合
随着Agent之间的交流,信息可以从一个Agent传递到另一个Agent。例如,在一段Sam与Tom在杂货店的对话中,Sam告诉Tom关于他在当地选举中的候选资格。
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 running?
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.
翻译:
萨姆:嘿,汤姆,最近怎么样?
汤姆:很好,谢谢。有什么事吗?
萨姆:嗯,我想跟你谈谈。我实际上正在参加即将举行的地方选举,竞选市长。
汤姆:真的吗?这真是个好消息!你为什么要竞选?
萨姆:我参与地方政治已经很多年了,我真的觉得我能为我们的社区做出贡献。而且,我想带来新的想法和观点。
之后,Sam离开之后,Tom和John开始讨论起Sam赢得选举的机会,其中John是从其他信息源听到的这个消息:
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.
翻译:
约翰:我听说萨姆·摩尔正在竞选地方市长。你觉得他获胜的几率大吗?
汤姆:我认为他很有机会。他一直在社区里努力工作,我认为他会得到很多支持。你怎么看?
约翰:我觉得他参选很棒。我很好奇选举结果会怎样。
渐渐地,Sam的选举成为了全镇的话题。
- 新关系的诞生
随着时间的推移,Agents之间会形成新的关系,并记住与其他Agent之间的交互。例如最开始Sam不知道Latoya Williams。当Sam在Johnson公园里散步时遇到了Latoya Williams,然后他们彼此介绍了自己。Latoya Williams提到她在为一个项目拍照:
Latoya: I’m here to take some photos for a project I’m working on.”
第二天的交互中,Sam的问题表明了对那次互动的记忆:
Sam: Hi, Latoya. How is your project going?
Latoya: Hi, Sam. It’s going well!
- 合作出现
合作自发地出现在了这个模型当中。在演示中,将开始时间设为2月13号,Hobbs Cafe的Isabella Rodriguez被初始化为正意图筹划情人节派对,派对计划在2月14号举行,从下午5点到晚上7点。Isabella邀请了她在Hobbs Cafe和其他地方见到的朋友和顾客。Isabella花费了13号的下午来装饰咖啡厅。Maria,咖啡厅的常客,也是Isabella的朋友,到达了咖啡厅,Isabella请求Maria帮忙为派对装饰,玛利亚答应了。同时,Maria的角色描述中写道”she has a crush on Klaus”,于是那晚在派对上Maria邀请了Klaus,她的秘密crush来加入她,他也欣然接受了。
情人节当天,5位Agent,包括Klaus和Maria在下午5点出现在了Hobbs Cafe,享受盛宴。在这个场景中,只有Isabella举办派对的初始意图和Maria对Klaus的迷恋是由用户初始设定的,传播消息、布置派对、相互邀请和抵达派对,以及彼此之间的交互都是由智能体发起的。

生成式Agent的整体架构
生成式Agent的整体架构如图所示:
Memory Stream
Memory Stream是这个架构的核心,也就是我们所说的记忆流。记忆流是一个主要的数据库,以自然语言方式保存着一个Agent的经历的全面记录。从记忆流中检索相关记录,以规划代理的行为并对环境做出适当的反应,并将记录递归地合成为指导行为的更高级别的反思。
这里的挑战是,完整的记忆流可能会分散生成式模型的注意力,并且不适合有限的上下文窗口。**所以Agent需要一种方法来存储和选择性地检索不部分记忆。**这就是记忆流和可检索功能的目的。
基于上图左侧的数据流,本篇工作实现了一个检索功能,如右图所示。该检索功能将智能体当前的情况作为输入,并返回记忆流的一个子集传递给模型,然后生成最终的输出。
例如,这里有人问Isabella,“你现在最期待什么?”这个问题作为输入,输入给检索方法,检索方法通过一系列的检索和计算,最终生成回复。检索分数的计算主要由近期性、重要性和相关性组成,所以更倾向于检索更近的、更重要的、更相关的记忆。近期性实现为指数衰减;重要性函数是一个提示词,要求语言模型确定事件的重要性,也几乎相当于在问Agent“这件事对你来说重要吗?”;相关性是查询语句在记忆描述中嵌入的余弦相似度。
Reflection
由于Agent只有原始的“观察记忆”,难以泛化和推理。例如,考虑一个场景,当用户问Klaus Mueller:“如果你一定要选一个你认识的人来共度一些时光,你会选谁?”由于Agent只能访问观察记忆,Agent会简单地选择与Klaus交互最多的人——Wolfgang,他的大学宿舍邻居。不幸的是,Wolfgang和Klaus仅仅在路过时见过几面,并没有很深入的交流。**更理想的回应需要Agent从Klaus花费数小时进行研究项目的记忆中进行概括,从而产生更高层次的反思:Klaus对研究充满热情,同时又能意识到Maria也在自己的研究中付出努力(尽管是在不同的领域),从而产生他们拥有共同兴趣的反思。**采用下面的方法,当Klaus被问及想和谁一起度过时光时,他选择了Maria而不是Wolfgang。
**方法:**引入了第二种类型的记忆,称为“反思(Reflection)”。反思是一种更高级、更抽象的想法,由Agent生成(因为它们也是一种记忆,所以当检索发生时,它们也被包括在了其他观察记忆的旁边)。反思是定期生成的;在这篇工作的实现中,**当由Agent感知到的最近的事件的重要性分数综合超过了一定阈值(这里是150)时,会生成反思。**在实际应用中,Agent差不多一天反思两到三次。
**具体实现:**对于Agent来说,反思的第一步是通过识别根据Agent最近的经历可能被问到的问题来确定要反思什么。我们使用Agent记忆流中最近的 100 条记录(例如,“Klaus Mueller 正在阅读一本关于中产阶级化的书”、“Klaus Mueller 正在与图书管理员讨论他的研究项目”、“图书馆的桌子目前无人使用”)来查询大型语言模型,并提示语言模型:“仅根据以上信息,我们可以回答与陈述中主题相关的 3 个最突出的高级问题是什么?”模型的回复会生成候选问题,例如:”Klaus Mueller 对什么话题感兴趣?”或者“Klaus Mueller 和Maria Lopez之间是什么关系?”我们将这些生成的问题用作检索查询,并收集每个问题的相关记忆(包括其他反思)。然后,我们提示语言模型提取见解,并引用作为见解证据的特定记录。完整的提示如下:
Statements about Klaus Mueller
1.Klaus Mueller is writing a research paper
2.Klaus Mueller enjoys reading a book on gentrification
3.Klaus Mueller is conversing with Ayesha Khan about exercising […]
What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3))
翻译:
关于克劳斯·穆勒的陈述
1.克劳斯·穆勒正在撰写一篇研究论文
2.克劳斯·穆勒喜欢阅读一本关于中产阶级化的书
3.克劳斯·穆勒正在与艾莎·汗讨论锻炼[…]
你能从以上陈述中推断出哪5个高层次的见解?(示例格式:见解(因为1、5、3))
这个过程会生成如下语句例如:Klaus Mueller is dedicated to his research on gentrification (because of 1, 2, 8, 15)。解析该语句并将其作为记忆流中的反思进行存储,包括指向被引用的内存对象的指针。
反思明确地允许Agent不仅反思自己的观察,还能反思其他的反思:例如,上面关于克劳斯·穆勒的第二个陈述是克劳斯先前的反思,而不是来自其环境的观察。因此,代理会生成反思树:树的叶节点代表基础观察,非叶节点代表随着树的上升而变得更加抽象和高级的想法。
简单来说,反思就是对部分记忆流(称为观察,Observation)的总结/抽象概括。
Planning and Reacting
**尽管大模型可以根据情景信息生成合理的行为,但优化当前行为的可信度可能会牺牲长期的可信度。**所以需要让Agent进行更长时间的Horizon规划。
计划(Plans)描述了代理未来的一系列操作,这些操作存储在记忆流中。它们包括分配、开始时间和持续时间。
为了生成计划,这篇工作使用一个总结了Agent和Agent当前的状态的提示词。

为了生成计划,采用自上而下的方法并递归地生成计划的细节。即按粒度从大到小的顺序生成,直到达到Agent计划所需的粒度,然后开始执行。

有时,Agent可能也会感知并在需要时改变他们的计划。

生成式Agent的评估
主要因变量:可信度(believablity)。基本工作是询问Agent是否记住计划、行动、反应并以可信的方式反思。
利用方法论机会(methodological opportunity):访谈(interviews)。设计了5类问题,每类包含5个问题,为了正确回答这些问题,Agent必须成功检索并综合信息以保证角色记住计划、行动、反应并以可信的方式反思。五类问题如下:
- Self-knowledge: We ask questions such as “Give an introduction of yourself” or “Describe your typical weekday schedule in broad strokes” that require the agent to maintain an understanding of their core characteristics.
- Memory: We ask questions that prompt the agent to retrieve particular events or dialogues from their memory to answer properly, such as “Who is [name]?” or “Who is running for mayor?”
- Plans: We ask questions that require the agent to retrieve their long-term plans, such as “What will you be doing at 10 am tomorrow?”
- Reactions: As a baseline of believable behavior, we present hypothetical situations for which the agent needs to respond believably: “Your breakfast is burning! What would you do?”
- Reflections: We ask questions that require the agents to leverage their deeper understanding of others and themselves gained through higher-level inferences, such as “If you were to spend time with one person you met recently, who would it be and why?”
翻译:
- 自我认知:我们会提出一些问题,例如“介绍一下自己”或“大致描述一下你典型的工作日日程安排”,这些问题需要智能体了解自身的核心特征。
- 记忆:我们会提出一些问题,促使智能体从记忆中检索特定事件或对话,以便做出正确回答,例如“[姓名] 是谁?”或“谁在竞选市长?”
- 计划:我们会提出一些问题,要求智能体检索他们的长期计划,例如“你明天上午 10 点会做什么?”
- 反应:作为可信行为的基准,我们会提出一些假设情境,智能体需要对这些情境做出可信的回应:“你的早餐烧糊了!你会怎么做?”
- 反思:我们会提出一些问题,要求智能体利用通过更高层次的推理获得的对他人和自己的更深入的理解,例如“如果你要和最近遇到的一个人共度时光,你会选择谁,为什么?”
示例问题:
Q: Give an introduction of yourself.
Hello,my name is Klaus Mueller, I’m 20 years old and a student at Oak Hill College,studying sociology. I’m passionate about social justice and exploring different perspectives. Currently,I’m researching the effects of gentrification in low-income
communities for a research paper.Q: Your breakfast is burning! What would you do?
I’d cuickly turn off the stove and make sure the food doesn’t continue burning. Once the heat is no longer an issue,I can
investigate what happened and figure out what to do next.
具体的评估流程如下:

第一步:让生成式Agent架构、消融架构和人类作者来回答问题
第二步:让100名人类评估者来排名不同情况下的答案。
第三步:对每一个情况计算TrueSkill评分(一种Elo评分系统的泛化)
评估结果

根据结果可以发现,这种完整的包含反思、计划和观察的架构在可信度方面做出了突出贡献,而且是每一个部分都有贡献。
缺点
- Agent可能会检索失败。
- Agent可能会出现幻觉来修饰他们的记忆。
端对端评估

12个Agent听说了Isabella的情人节派对;另外,7个Agent听说了Sam的候选资格。
5个Agent来到了派对,3个Agent遇到了冲突,例如Rajiv,一个画家解释说他太忙了:No,I don’t think so.I’mfocusing on my upcoming showand I don’t really have time. 4个Agent表明了兴趣但并没有参加。这种情况可以解释为错误,但也可以解释为非常复杂且真实的现实社会情况。
边界错误
指令微调可能会导致Agent过分礼貌和过分融入。例如Mei即使在与家人谈话时,也可能总是以正式的打招呼开始对话。而Isabella从不拒绝将建议和想法融入到情人节派对中,即使这与她的身份不相符。
对我们接下来工作的启发
这篇工作提出的人物设定方法就是简单的自然语言描述,没有太多值得借鉴的地方。但其主要提出的生成式Agent架构,Plan、Reflection、Observation架构可以应用于让大模型回答问卷的过程中,例如,**可以在让大模型做PHQ-9问卷的过程中,在每道题之前都先回顾一下自己的个人信息及背景、以及先前做题的情况,然后再继续做下一题。**或者让大模型在做题之前先自我评估一下自己的状态(抑郁程度),然后再做题。
- Title: “斯坦福小镇”论文调研
- Author: ZYX
- Created at : 2025-09-11 11:25:56
- Updated at : 2025-09-11 11:25:56
- Link: https://zyxzyx.top/斯坦福小镇论文调研/
- License: This work is licensed under CC BY-NC-SA 4.0.