Smallville「AI 小镇」:一个科技的奇迹
①、Smallville「AI 小镇」开源,体验如何?
下午我尝试了一下 Smallville「AI 小镇」的部署,先跟大家分享一下我的个人看法和体验:
1. 对于普通用户来说,其实不需要自己去部署,因为这只是一份实验性的附属代码,还没有完善到特别好的程度。代码写得比较简陋,各种错误都是以统一的 “Error” 打印出来,调试起来相对麻烦。而且使用 OpenAI API 需要消耗很多资源,普通用户可能承担不起这个成本。
2. 代码中附带了一些现成的运行结果,可以回放和演示,不需要联网和消耗资源,可以运行一下来了解设计思路。
3. 代码中的 AI Agents 的决策思路和 prompt engineering 值得我们深入学习和探索。
4. 这个项目有很高的价值,具有启发性和想象力。我想到了一些可能的方向,希望有人能继续开发:
– 支持本地化 LLM,比如 LLama,这样在使用 GPT API 时就能节约成本。
– 接入弹幕互动,增加更多角色/人设,甚至可以中途加入新的 agent,这样就能自动开启一个直播间。
– 支持多语言,比如改造成中文对话/指令。
– 对游戏开发也有启发,可以在游戏中实时互动的角色,完全由 AI 自主决策,相当于更智能的机器人;或者在游戏开发阶段利用 agent + prompt 的思路,快速生成更多交互文案和事件逻辑,给玩家提供更多的随机文本,同时又不需要实时接入 LLM,成本和内容质量更加可控。
如果你想自己部署的话,按照官方文档基本上能够成功。我在部署过程中遇到了两个问题,分享给大家:
1. 代码中有一个 bug,在模拟存档中没有自动创建 movement 文件夹,导致后续的 agent 动作无法保存而报错。解决办法是手动在相应的 ../../environment/frontend_server/storage/simulator_name/
文件夹中创建一个 movement 文件夹。
2. 如果需要修改 OpenAI API 的 base_url,需要在 reverie/backend_server/persona/prompt_template/gpt_structure.py
文件中显式指定你的链接,增加一句 openai.api_base = 'url/v1'
。注意,一般在修改 API URL 时,需要在末尾增加 v1
才能正常使用。
部署步骤简单重复一下:
1. 新建一个 Python 3.9.12 环境,如果使用 conda 管理的话,可以按照以下步骤进行:
– conda create -n py39 python=3.9.12
– conda activate py39
2. 拉取项目源代码到本地:
– git clone https://github.com/joonspk-research/generative_agents
3. 安装依赖(记得激活 py39 环境后进行):
– cd generative_agents
– pip install -r requirements
4. 手动生成 utils 文件,在 reverie/backend_server
文件夹中创建一个 utils.py
文件,手动粘贴以下内容:
这样就完成了安装部分。接下来是运行部分,运行分为:启动前端、启动后端、运行并保存、回放、演示。
启动前端:
cd environment/frontend_server
python manage.py runserver
如果一切正常,打开 http://localhost:8000/ 就会看到一个正常启动的界面。
启动后端:
不要关闭前端的终端窗口,打开一个新的终端窗口,然后输入以下命令:
cd reverie/backend_server
python reverie.py
会提示你输入智能体的名称和模拟的名称(类似于新建游戏角色和存档名)。比如启动一个三人的新模拟,输入 base_the_ville_isabella_maria_klaus
,然后输入一个存档名,比如 test-simulation
。之后的回放和演示都会用到这个存档。
运行和保存:
在输入完角色名和存档名后,打开 http://localhost:8000/simulator_home 就能看到本次运行的地图界面。目前只能使用方向键移动地图,地图还蛮大的。终端中会提示你输入后续的运行指令,比如运行游戏中的 100 个步骤,输入 run 100
。
回放:
在服务器运行之后,可以通过输入网址的方式重播之前运行过的存档,格式如下:
http://localhost:8000/replay/<simulation-name>/<starting-time-step>
其中 <simulation-name>
是模拟存档的名称,<starting-time-step>
是从哪个时间步骤开始重新回放。比如可以打开 http://localhost:8000/replay/July1_the_ville_isabella_maria_klaus-step-3-20/1/ 查看一些自带示例。
演示:
重播回放功能主要用于调试,如果要进行演示,需要先对存档文件进行压缩。使用编辑器打开 reverie
目录中的 compress_sim_storage.py
文件,执行 compress
函数(注意替换存档的名称)。
暂无评论内容