Generative Agents
在 Smallville 游戏环境中运行并回放具有人类行为模拟的多角色仿真。
按维度查看评分与理由
证据显示:README要求用户手动创建utils.py并硬编码OpenAI API密钥,没有提供最小权限或密钥管理的指导;没有用户确认机制;数据流不透明;敏感数据处理(API密钥)仅靠用户自觉;依赖安全未提及;外部影响(如API调用成本)有提示但无控制;回滚仅通过保存模拟,无版本控制;来源归属有作者列表,但发布者未验证。扣分原因:缺乏安全实践和透明度。
证据显示:README步骤清晰,但未提供错误处理或恢复指导;依赖列表存在但未固定版本;失败消息(如API挂起)有提示但无详细错误处理。扣分原因:依赖可用性未验证,失败处理不充分。
证据显示:面向研究人员和开发者,提供了多种场景(模拟、回放、演示);能力边界未明确;触发命令(run, call)有说明但精度一般;环境适配仅提及Python 3.9.12和浏览器建议。扣分原因:能力边界和触发精度不足。
证据显示:README结构清晰,安装步骤详细;命名稳定(如base_the_ville...);有示例和FAQ(如Tips);已知限制(如API挂起)有提及;Apache-2.0许可证明确;无版本号或变更日志;维护责任未明确。扣分原因:缺少版本管理和维护责任说明。
证据显示:输出(模拟结果)可保存和回放,但格式未标准化;边际价值高(研究用途);成本效益有提示(API成本)但无优化。扣分原因:输出可用性有限,成本控制不足。
证据显示:README引用论文,但未提供复现细节;无交叉验证;事实与推断未明确区分。扣分原因:缺乏可验证性。
- 用户需自行管理API密钥,存在泄露风险。
- 依赖未固定版本,可能影响可复现性。
- 模拟成本可能较高,需注意API费用。
这个 Agent 能做什么,适合哪些场景?
这是论文《Generative Agents: Interactive Simulacra of Human Behavior》配套的核心仿真模块与游戏环境。项目由 Django 环境服务器和位于 reverie/backend_server 的仿真服务器组成,后者通过 reverie.py 从命令行运行。用户可在浏览器中查看 Smallville 地图及活跃角色,并以游戏步推进仿真;每步代表游戏内 10 秒。仿真可保存到 environment/frontend_server/storage,随后可从指定时间步回放或压缩为演示版本。它适合希望复现实验环境、调整角色初始记忆或制作 Smallville 仿真演示的开发者与研究人员,而非即开即用的聊天产品。
先在 environment/frontend_server 运行 python manage.py runserver,再在 reverie/backend_server 运行 python reverie.py。仿真服务器要求输入一个已存在的 forked simulation 名称和新仿真名称;例如可加载 base_the_ville_isabella_maria_klaus,然后输入新名称。服务器提示 Enter option: 后,run <step-count> 会按指定游戏步数推进仿真,浏览器中的 /simulator_home 显示地图和角色移动;fin 保存并退出,exit 不保存退出。它可用 call -- load history the_ville/<history_file_name>.csv 读取 CSV 中以分号分隔的角色记忆记录,也可通过 reverie/compress_sim_storage.py 的 compress 函数准备演示文件。已保存的仿真可通过 /replay/<simulation-name>/<starting-time-step> 回放,压缩后的仿真可通过 /demo/<simulation-name>/<starting-time-step>/<simulation-speed> 演示。
- 希望复现论文配套环境的研究人员,可加载
base_the_ville_n25并运行 25 名角色的基础仿真。 - 需要观察 Isabella Rodriguez、Maria Lopez 与 Klaus Mueller 三角色互动的开发者,可从
base_the_ville_isabella_maria_klaus创建新仿真。 - 要为既有角色补充背景记忆的实验人员,可编辑与示例格式一致的 CSV,并用
call -- load history导入。 - 需要从某个已保存时间点检查角色行为的调试人员,可访问
/replay/<simulation-name>/<starting-time-step>。 - 要展示已完成仿真的演示者,可先压缩仿真,再通过
/demo/.../<simulation-speed>调整播放速度。 - 需要更换地图布局、角色名称或可容纳角色数量的项目维护者,可基于现有基础仿真修改,并在必要时使用 Tiled 编辑地图。
这个 Agent 有哪些优点和局限?
- 同时提供命令行仿真服务器、Django 环境服务器与浏览器地图界面,可直接观察角色在 Smallville 中的移动。
- 提供 3 角色和 25 角色两套基础仿真,便于从可运行的初始状态开始。
- 支持从 CSV 导入按角色组织的记忆记录,能够为初始化提供明确的历史输入。
- 保存、指定时间步回放与压缩演示是分离的明确流程,分别覆盖调试和展示需求。
- 核心运行依赖 OpenAI API 密钥,README 明确提示 API 达到每小时速率限制时可能挂起。
- 运行需要同时维护两个本地服务器,并通过终端提示管理 fork、新仿真、运行和保存。
- README 指出多角色仿真在早期 2023 年可能成本较高,且建议频繁保存以避免重启造成损失。
- 自定义角色名称或增加 Smallville 容量可能需要直接用 Tiled 修改地图,配置门槛较高。
如何安装或部署这个 Agent?
需要 OpenAI API 密钥。在 reverie/backend_server 创建 utils.py,至少配置 openai_api_key、key_owner,并保留 README 所列的资源、存储与环境路径配置。安装 requirements.txt 中列出的全部依赖;项目测试所用 Python 版本为 3.9.12。随后进入 environment/frontend_server,运行 python manage.py runserver 启动环境服务器。
如何使用这个 Agent?
保持环境服务器运行,并在另一终端进入 reverie/backend_server,运行 python reverie.py。按提示输入基础仿真名,例如 base_the_ville_isabella_maria_klaus,再输入一个新的仿真名称。打开 http://localhost:8000/simulator_home,然后在仿真终端输入例如 run 100;完成后输入 fin 保存,或输入 exit 放弃保存。保存后的结果位于 environment/frontend_server/storage,可从相应 replay URL 重新播放。
常见问题
运行前必须准备什么凭据?
reverie/backend_server/utils.py 中填写 OpenAI API 密钥,并设置 key_owner。一次游戏步代表多长时间?
run 100 会执行 100 个游戏步。API 请求卡住时怎么办?
fin 保存进度。如何保留并继续一段仿真?
fin 保存并退出;下次启动仿真服务器时,将该保存名称作为 forked simulation 输入即可从保存点继续。