【神级项目】Generative Agents:斯坦福“西部世界”演示站详解,看25个AI如何在虚拟小镇自主生活

编程达人挑战赛·第5期 10w+人浏览 152人参与

📖 前言

如果你关注大模型(LLM)和 AI Agent(智能体)领域,你一定听说过 “斯坦福 25 个 AI 智能体小镇” 的故事。

这是一个由 Stanford 和 Google 联合发布的里程碑式研究项目——《Generative Agents: Interactive Simulacra of Human Behavior》。在这个项目中,研究人员构建了一个名为 Smallville 的虚拟沙盒小镇,里面住着 25 个由 GPT 驱动的 AI 居民。它们起床、做饭、上班、八卦,甚至自主组织了一场情人节派对。

今天,我们将深入剖析该项目的在线演示网站(Reverie Demo),带你从上帝视角观察这些智能体是如何“思考”和“生活”的。


🌐 网站概览

  • 演示地址https://reverie.herokuapp.com/arXiv_Demo/
  • 项目论文:Generative Agents: Interactive Simulacra of Human Behavior
  • 核心技术:LLM(大语言模型)、记忆流(Memory Stream)、反思(Reflection)、规划(Planning)

什么是 Smallville?

打开网站,映入眼帘的是一个类似《星露谷物语》或《口袋妖怪》早期风格的 2D 像素 RPG 地图。这就是 Smallville

在这里插入图片描述

(图:Smallville 小镇全貌,包含了房屋、商店、公园和酒吧)

这个网站并不是一个实时的游戏,而是一个预先录制的模拟回放。它展示了论文中进行的为期两天的模拟实验。在这里,你无法控制角色,但你可以像“上帝”一样,查看每个角色每时每刻在想什么、在做什么。


🛠️ 核心功能与玩法(演示站指南)

演示站的界面虽然复古,但信息量极大。以下是核心交互模块的详细图解:

1. 上帝视角(Map View)

网页的主体是小镇地图。你会看到代表不同角色的像素小人(Sprite)在地图上移动。

  • 移动:AI 会根据自己的日程安排,从卧室走到厨房,或者去商店上班。
  • 交互:当两个 AI 靠近时,如果它们决定聊天,你会看到它们头上出现对话气泡(💬)。

2. 角色状态面板(Agent State)

当你点击地图上的任意一个角色(例如 Isabella Rodriguez)时,或者在顶部的选择栏选中她,页面不仅会高亮该角色,还会显示详细状态:

提示:这是理解 Agent 运行机制最关键的部分。

  • Name & Portrait:角色姓名和头像。
  • Current Action:当前正在做什么(例如:making coffee)。
  • Location:具体的坐标位置。
  • Current Dialogue:如果正在聊天,这里会显示实时的对话内容。

3. 记忆与提示词流(The “Brain” Internals)

在演示站中,最硬核的部分在于展示了 LLM 是如何被调用的。虽然网页版主要展示行为,但理解其背后的 Prompt 架构 至关重要。

当你观察角色行为时,后台其实发生了一系列复杂的推理过程:

  1. 感知 (Observation):Isabella 看到咖啡机空了。
  2. 检索 (Retrieval):从记忆库中提取相关记忆(“我每天早上都要喝咖啡”)。
  3. 规划 (Planning):生成下一步行动指令(“去煮咖啡”)。

🧠 技术深度解析:Agent 是如何“活”过来的?

这个 Demo 之所以成为经典,是因为它提出了一套完整的 Agent 认知架构。在浏览网站时,你可以结合以下架构图来理解:

在这里插入图片描述

(图:生成式智能体的核心架构 - 感知、记忆流、检索、规划、反思)

1. 记忆流 (Memory Stream)

这是 Agent 的核心数据库。它记录了 Agent 所有的经历,不仅包括发生了什么,还包括 Agent 的思考。

  • 演示对应:网站上的每一个动作,最终都会被写入这个巨大的 Log 列表中。

2. 检索 (Retrieval)

当 Agent 需要做出决定时,它不会把所有记忆都丢给 GPT(上下文太长),而是根据三个标准检索最相关的记忆:

  • 近期性 (Recency):刚刚发生的事更重要。
  • 重要性 (Importance):分手比吃早饭更重要。
  • 相关性 (Relevance):煮咖啡时,“咖啡豆在哪”的记忆比“昨天看了电影”更相关。

3. 反思 (Reflection)

这是让 AI 变聪明的关键。Agent 不仅记录流水账,还会定期总结

  • 例子:记忆里有“周一吃了早饭”、“周二吃了早饭”… -> 反思生成高层认知:“我是一个坚持吃早饭的人”。

4. 规划 (Planning)

Agent 会生成从粗粒度(“今天去上班”)到细粒度(“先刷牙,再做饭,然后出门”)的计划,并能根据突发事件(例如路上遇到了朋友)动态调整计划。


🎭 经典案例:情人节派对的“涌现”现象

在浏览演示站时,你可以寻找著名的 “情人节派对” 事件。这是 Multi-Agent 协作的一个奇迹:

  1. 研究人员只告诉了其中一个 Agent(Isabella):“你想举办一个情人节派对”。
  2. 自主扩散:Isabella 自己规划了时间地点,并开始邀请朋友。
  3. 信息传播:被邀请的朋友(如 Tom)遇到其他朋友时,会把这个消息告诉其他人(“哎,你知道 Isabella 要开派对吗?”)。
  4. 协同行为:到了约定时间,多个 Agent 真的聚集到了 Isabella 的公寓里!

这一切都没有任何脚本控制,完全是 Agent 之间八卦和社交的结果。


💻 如何本地运行?

虽然这个 Heroku 演示站只能看不能动,但该项目已经开源!如果你想自己搭建一个“西部世界”,可以访问 GitHub。

GitHub 地址joonspk-research/generative_agents

简易运行步骤:

  1. 环境准备:Python 3.9+,Django。
  2. API Key:你需要一个 OpenAI API Key(消耗量较大,请注意钱包)。
  3. 启动后端
    python manage.py runserver
    
  4. 启动前端:项目自带了一个基于 Phaser 的前端服务器。

注意:运行完整的 25 人模拟非常昂贵(论文中提到两天模拟花费了数千美元的 API 额度),建议从单 Agent 或小规模测试开始。


📝 总结与思考

reverie.herokuapp.com 不仅仅是一个 Demo,它是 AI Native 应用 的雏形。它向我们证明了:

  1. 记忆+反思 可以赋予 LLM 连贯的人格。
  2. 社会行为 可以通过个体智能的交互涌现出来。
  3. 未来的游戏 NPC、虚拟助理甚至元宇宙居民,都将基于这种架构诞生。
### 生成式代理(Generative Agents)的概念及其在模拟人类行为方面的应用 #### 定义与背景 生成式代理是一种基于人工智能的技术框架,旨在通过复杂的多智能体系统(multi-agent systems)来模拟真实世界中的人类行为模式。这种技术的核心目标是创建能够表现出可信、动态且具有适应性的个体化行为的虚拟实体[^1]。 #### 关键特性 生成式代理的设计融入了多种高功能模块,其中包括但不限于规划、记忆管理以及工具使用等方面的功能实现: - **规划(Planning)**: 智能体具备任务分解和自我反省的能力,这使得它们可以制定并调整短期与长期的行为策略。例如,在特定场景下,智能体会依据当前环境状态和个人历史数据重新安排每日活动计划[^5]。 - **记忆(Memory)**: 记忆机制对于维持连贯性和情境感知至关重要。它不仅存储过去发生的事件细节,还支持快速检索最相关的过往经历以指导当下决策过程。具体而言,采用最大内积搜索(MIPS)算法优化信息提取效率[^4]。 - **工具使用(Tool Use)**: 此外,这些代理还能有效运用外部资源或服务完成复杂操作——像调用自然语言处理API生成对话内容或者分析科学研究资料等案例展示了其灵活性。 #### 应用领域及效果评价 为了验证上述理论构想的实际可行性,研究者们开展了多项实验测试: - 技术层面考察单个独立运行时的表现质量;同时也关注多个相互作用下的整体生态系统稳定性. - 方法上采取了“采访”形式获取关于知识水平、行动逻辑等方面的反馈意见,并对比不同条件下(如限制访问某些核心组件)的效果差异. 结果显示,完整的架构配置显著提升了仿真精度,减少了诸如无关记忆干扰、不恰当措辞等问题的发生频率[^3]。 #### 实现流程概览 以下是构建此类系统的典型步骤说明(注意这里仅作概括介绍而非详尽指南): ```python def create_generative_agent(name, description, birth_location): agent = { 'name': name, 'description': description, 'location': birth_location, 'memory': [], 'tools': [] } def plan(): # Generate hourly schedule based on current date pass def execute_plan(): nearby_agents = get_nearby_agents(agent['location']) interact_with(nearby_agents) update_schedule() rank_memories_by_importance() return {'agent': agent, 'functions': [plan, execute_plan]} ``` 此代码片段示意如何初始化一个基础版的生成型代理对象,并定义了一些基本的操作函数用于后续扩展开发工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

core321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值