简体中文 | English
斯坦福AI小镇由斯坦福大学和谷歌于2023年8月开源,由25个智能体组成的虚拟世界,模拟了真实的人类生活。
25个智能体完全由ChatGPT驱动,自主组织派对、参加会议、在情人节筹办各种活动。他们能够展现出与人类相似的生活模式和行为习惯。
Generative Agents的原始代码工程化程度较低,难以持续维护或拓展功能,且时隔一年多,中文LLM的能力也已胜任此类任务。因此,我们对原项目进行了重构+深度汉化,旨在为中文用户提供一个利于维护的基础版本,以便后续实验或尝试更多玩法。
wounderland项目是原Generative Agents项目的重构版本,结构良好且代码质量远优于原版,因此本项目基于wounderland开发。
主要工作:
回放画面:
注:地图及人物名称也同步汉化,是为了避免LLM在遇到中英混杂的上下文时,切换到英文语境。
git clone https://github.com/x-glacier/GenerativeAgentsCN.git
cd GenerativeAgentsCN
修改配置文件 generative_agents/data/config.json
:
base_url
和model
与Ollama中的配置一致。api_keys
中填入对应的key,并根据API文档修改base_url
和model
。建议先使用anaconda3创建并激活虚拟环境:
conda create -n generative_agents_cn python=3.11
conda activate generative_agents_cn
安装依赖:
pip install -r requirements.txt
cd generative_agents
python start.py --name sim-test --start "20240213-09:30" --step 10 --stride 10
参数说明:
name
- 每次启动虚拟小镇,需要设定唯一的名称,用于事后回放。start
- 虚拟小镇的起始时间。resume
- 在运行结束或意外中断后,从上次的“断点”处,继续运行虚拟小镇。step
- 在迭代多少步之后停止运行。stride
- 每一步迭代在虚拟小镇中对应的时间(分钟)。假如设定--stride 10
,虚拟小镇在迭代过程中的时间变化将会是 9:00,9:10,9:20 ...python compress.py --name <simulation-name>
运行结束后将在results/compressed/<simulation-name>
目录下生成回放数据文件movement.json
。同时还将生成simulation.md
,以时间线方式呈现每个智能体的状态及对话内容。
python replay.py
通过浏览器打开回放页面(地址:http://127.0.0.1:5000/?name=<simulation-name>
),可以看到虚拟小镇中的居民在各个时间段的活动。
可通过方向键移动画面
参数说明
name
- 启动虚拟小镇时设定的名称。step
- 回放的起始步数,0代表从第一帧开始回放,预设值为0。speed
- 回放速度(0-5),0最慢,5最快,预设值为2。zoom
- 画面缩放比例,预设值为0.8。发布版本中内置了名为example
的回放数据(由qwen2.5:32b-instruct-q4_K_M生成)。若希望以较快速度从头开始回放,画面缩放比例为0.6,则对应的url是:
http://127.0.0.1:5000/?name=example&step=0&speed=2&zoom=0.6
也可直接打开simulation.md,查看example
中所有人物活动和对话信息。
画面中对话内容由qwen2.5:14b-instruct-q4_K_M生成
小镇全景
公园
咖啡馆
教室
Generative Agents: Interactive Simulacra of Human Behavior
Generative Agents
wounderland