Skip to content

本项目为Generative Agents项目的重构 深度汉化版本,旨在为中文用户提供一个利于维护的基础版本,以便后续实验或功能拓展。

License

Notifications You must be signed in to change notification settings

x-glacier/GenerativeAgentsCN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简体中文 | English

生成式智能体(Generative Agents)深度汉化版

斯坦福AI小镇由斯坦福大学和谷歌于2023年8月开源,由25个智能体组成的虚拟世界,模拟了真实的人类生活。

25个智能体完全由ChatGPT驱动,自主组织派对、参加会议、在情人节筹办各种活动。他们能够展现出与人类相似的生活模式和行为习惯。

Generative Agents的原始代码工程化程度较低,难以持续维护或拓展功能,且时隔一年多,中文LLM的能力也已胜任此类任务。因此,我们对原项目进行了重构 深度汉化,旨在为中文用户提供一个利于维护的基础版本,以便后续实验或尝试更多玩法。

wounderland项目是原Generative Agents项目的重构版本,结构良好且代码质量远优于原版,因此本项目基于wounderland开发。

主要工作:

  • 重写全部提示语,将智能体的“母语”切换为中文,以便对接Qwen-2.5或GLM-4等中文模型;
  • 针对中文特点和Qwen2.5-7b/14b模型的能力,优化中文提示语及智能体之间的对话起止逻辑;
  • 所有提示语模板化,便于后期维护;
  • 修正原版的小问题(例如wounderland原版中智能体在入睡后便不再醒来);
  • 增加对本地Ollama API的支持,同时将LlamaIndex embedding也接入Ollama,实现完全本地部署,降低实验成本。Ollama安装及配置可参考ollama.md
  • 增加“断点恢复”等特性;
  • 回放界面基于原Generative Agents前端代码精简,同时将智能体活动的时间线及对话内容保存至Markdown文档。

回放画面:

snapshot

注:地图及人物名称也同步汉化,是为了避免LLM在遇到中英混杂的上下文时,切换到英文语境。

1. 准备工作

1.1 获取代码:

git clone https://github.com/x-glacier/GenerativeAgentsCN.git
cd GenerativeAgentsCN

1.2 配置大语言模型(LLM)

修改配置文件 generative_agents/data/config.json:

  1. 默认使用Ollama加载本地量化模型,并提供OpenAI兼容API。需要先拉取量化模型(参考ollama.md),并确保base_urlmodel与Ollama中的配置一致。
  2. 如果希望调用其他厂商的API,需要在api_keys中填入对应的key,并根据API文档修改base_urlmodel

1.3 安装python依赖

建议先使用anaconda3创建并激活虚拟环境:

conda create -n generative_agents_cn python=3.11
conda activate generative_agents_cn

安装依赖:

pip install -r requirements.txt

2. 运行虚拟小镇

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 ...

3. 回放

3.1 生成回放数据

python compress.py --name <simulation-name>

运行结束后将在results/compressed/<simulation-name>目录下生成回放数据文件movement.json。同时还将生成simulation.md,以时间线方式呈现每个智能体的状态及对话内容。

3.2 启动回放服务

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中所有人物活动和对话信息。

3.3. 回放截图

画面中对话内容由qwen2.5:14b-instruct-q4_K_M生成

小镇全景

小镇全景

公园

公园

咖啡馆

咖啡馆

教室

教室

4. 参考资料

4.1 论文

Generative Agents: Interactive Simulacra of Human Behavior

4.2 代码

Generative Agents

wounderland

About

本项目为Generative Agents项目的重构 深度汉化版本,旨在为中文用户提供一个利于维护的基础版本,以便后续实验或功能拓展。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published