今年八月份斯坦福AI小镇项目的开源又再次激起了人们对 Generative Agents 概念的关注,该项目开源后不久,a16z 主导的 ai-town 项目也迅速公开,提供了一套可以方便的搭建自己的AI小镇的开源框架,如对这两个项目及源码有兴趣可参考笔者之前的系列文章
让人兴奋的是,除了上面两个火爆的开源项目之外,同期国内也发布了一个 Generative Agents 框架的类AI小镇项目—— AgentSims
相比于斯坦福AI小镇,该项目进阶地提出了使用任务来评估 LLM 的能力,将 Agents 作为 LLM 的基础能力之一,相比于其他项目的优势有:
下面将详细介绍该项目的搭建流程
本框架按照 GitHub 上的教程搭建可以运行,但有许多细节问题要求用户有一定的计算机基础并且能够解决网络问题,下面将对搭建流程进行补充讲解
Python: 3.9.x
MySQL: 8.0.31
需要的环境很简单,推荐conda安装 Python3.9,MySQL 无特殊要求
但教程中指出推荐使用 Linux 和 MacOS 进行搭建,这里为了不浪费大家时间,首推用 Mac 进行搭建,如果只有 Linux 加 Win 这样的组合也可以,但需要多一个步骤
config/api_key.json
文件,并以如下格式保存 KEY: {"gpt-4": "xxxx", "gpt-3.5": "xxxx"}
gpt-4 和 3.5 可以选择不同的 KEY
因为有些 KEY 可能有调用频率和次数的限制,教程中提到可以在 config/app.json
文件中修改 cooldown(两次运行间隔的时间) 和 count_limit(每次运行的循环次数) 参数,通过增大其值来保护 KEY
mkdir snapshot mkdir logs
打开mysql并输入以下命令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql\_native\_password BY '';
flush privileges;
create database `llm\_account` default character set utf8mb4 collate utf8mb4\_unicode\_ci;
create database `llm\_game` default character set utf8mb4 collate utf8mb4\_unicode\_ci;
create database `llm\_game0001` default character set utf8mb4 collate utf8mb4\_unicode\_ci;
create database `llm\_game0002` default character set utf8mb4 collate utf8mb4\_unicode\_ci;
安装 Python 依赖
pip install -r requirements.txt
// 运行根目录下的shell文件,第一次执行可能报没有nohup.log的错, 重新执行就可以
./restart.sh
看到如下打印即表示启动成功(日志会同步在nohup.log中显示,在控制台中断后后台会继续执行)
--------Server Started--------
这一步的监听端口可以在 main.py
里更改,但建议先维持原状,具体原因后一步会讲
客户端是用 Unity 的 WebGL 实现的,由于 WebGL 的代码暂时没有开源,项目里只有压缩过的 JS代码,导致连接的后端地址和端口无法更改(默认是localhost:8000)
这一步大家应该明白为什么推荐在 Linux 和 Mac 上搭建了,如果是 Mac 本地搭建服务器直接使用浏览器打开 client/index.html
这个文件即可(推荐使用非 chrome 浏览器,WebGL 可能有兼容问题),因为通过 localhost:8000 可以与本机的服务器通信
如果使用 Linux + Win 组合,请先在 Linux 上按上一步启动服务器并放开 8000 端口,如果想远程下载静态资源请将 client
文件夹用 apache 进行部署,或者直接在本地也 clone 一个工程并直接点开 client/index.html
文件也可以
进行到这一步应该可以顺利在浏览器打开 HTML 文件了,观察控制台可以看到一行报错:
到这一步,client的连接地址我们无法更改,只能取巧。笔者是在 Win 上下载了一个简易的 隧道软件 ,然后将本机8000端口的流量重定向到远程的8000端口(注意是tcp 通信使用的是ws协议):
gost -L tcp://:8000/xx.xx.xx.xx:8000
当然,也可以使用其他的转发或者重定向方式,只是提供一种解决思路
这样即可顺利运行客户端,看到服务器打印如下日志即运行成功
python -u tick.py
python -u mayor.py
两者的区别为 tick
方法是常规的模拟行为,由小镇居民自主活动;
mayor
方法按论文 里的解释,是启动了一个主体Agent作为市长或者总裁,并招募和选择合适的员工/市民来解决一定的问题等等,两种模式的选择可根据研究目的而定
(PS:建议先用tick模拟,可以看到更多的日志输出)
注:到这一步虽然跑起来了,但笔者仍然没有看到交互UI,可能是项目中有报错还没解决,日志里没有错误打印出来,需要一步步debug代码
相比于斯坦福AI小镇对于概念的详尽实现,以及ai-town项目搭建的灵活性很高的开发框架,AgentSims的优点在于可视化、模块化了任务、建筑和Agents的定义,对于非开发者很友好
尽管目前来说项目的部署还存在问题,而且客户端 Unity 的代码没有开源,但是项目的设计和可扩展性是非常优秀的,未来也许会成为国产开源 Generative Agents 的标杆
后续笔者也会再写一到两篇文章对照论文来解析项目源码,有兴趣的可以点个收藏和关注
原创不易,转载请注明出处
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。