前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >国产开源交互式AI小镇——AgentSims搭建详解

国产开源交互式AI小镇——AgentSims搭建详解

原创
作者头像
siri
发布2023-09-22 17:10:52
1.6K3
发布2023-09-22 17:10:52
举报
文章被收录于专栏:siri的开发之路siri的开发之路

项目简介

今年八月份斯坦福AI小镇项目的开源又再次激起了人们对 Generative Agents 概念的关注,该项目开源后不久,a16z 主导的 ai-town 项目也迅速公开,提供了一套可以方便的搭建自己的AI小镇的开源框架,如对这两个项目及源码有兴趣可参考笔者之前的系列文章

让人兴奋的是,除了上面两个火爆的开源项目之外,同期国内也发布了一个 Generative Agents 框架的类AI小镇项目—— AgentSims

相比于斯坦福AI小镇,该项目进阶地提出了使用任务来评估 LLM 的能力,将 Agents 作为 LLM 的基础能力之一,相比于其他项目的优势有:

  • 可自定义地组合任务和计划,自由度更高
  • 提供了可视化的操作界面,可手动创建 Agent、建筑、任务等,对于编程熟练度不高的研究者非常友好

下面将详细介绍该项目的搭建流程

搭建流程介绍:


本框架按照 GitHub 上的教程搭建可以运行,但有许多细节问题要求用户有一定的计算机基础并且能够解决网络问题,下面将对搭建流程进行补充讲解

  • 准备运行环境,需要的依赖如下
代码语言:txt
复制
 Python: 3.9.x 
 MySQL: 8.0.31

需要的环境很简单,推荐conda安装 Python3.9,MySQL 无特殊要求

但教程中指出推荐使用 Linux 和 MacOS 进行搭建,这里为了不浪费大家时间,首推用 Mac 进行搭建,如果只有 Linux 加 Win 这样的组合也可以,但需要多一个步骤

  • 准备 GPT 的 API KEY,并创建配置文件(获取KEY的方法不做赘述) 在config目录下创建 config/api_key.json 文件,并以如下格式保存 KEY:
代码语言:txt
复制
 {"gpt-4": "xxxx", "gpt-3.5": "xxxx"}

gpt-4 和 3.5 可以选择不同的 KEY

因为有些 KEY 可能有调用频率和次数的限制,教程中提到可以在 config/app.json 文件中修改 cooldown(两次运行间隔的时间) 和 count_limit(每次运行的循环次数) 参数,通过增大其值来保护 KEY

  • 其他预备工作: 创建目录
代码语言:txt
复制
 mkdir snapshot mkdir logs

打开mysql并输入以下命令

代码语言:txt
复制
 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 依赖

代码语言:txt
复制
 pip install -r requirements.txt
  • 启动 Server (Server基于tornado搭建了一个简单的ws服务器,用于监听client的请求并执行模拟)
代码语言:txt
复制
 // 运行根目录下的shell文件,第一次执行可能报没有nohup.log的错, 重新执行就可以
  ./restart.sh

看到如下打印即表示启动成功(日志会同步在nohup.log中显示,在控制台中断后后台会继续执行)

代码语言:txt
复制
 --------Server Started--------

这一步的监听端口可以在 main.py 里更改,但建议先维持原状,具体原因后一步会讲

  • 启动客户端(这一步是笔者遇到问题比较多的地方,可能是因为不熟悉 WebGL,大家如发现描述不准的地方可进行指正)

客户端是用 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协议):

代码语言:txt
复制
 gost -L tcp://:8000/xx.xx.xx.xx:8000

当然,也可以使用其他的转发或者重定向方式,只是提供一种解决思路

这样即可顺利运行客户端,看到服务器打印如下日志即运行成功

  • 开始模拟 到前一步都是静态的,实际的模拟驱动要运行这两个文件的任意其一
代码语言:txt
复制
python -u tick.py 
python -u mayor.py

两者的区别为 tick 方法是常规的模拟行为,由小镇居民自主活动;

mayor 方法按论文 里的解释,是启动了一个主体Agent作为市长或者总裁,并招募和选择合适的员工/市民来解决一定的问题等等,两种模式的选择可根据研究目的而定

(PS:建议先用tick模拟,可以看到更多的日志输出)

:到这一步虽然跑起来了,但笔者仍然没有看到交互UI,可能是项目中有报错还没解决,日志里没有错误打印出来,需要一步步debug代码

总结


相比于斯坦福AI小镇对于概念的详尽实现,以及ai-town项目搭建的灵活性很高的开发框架,AgentSims的优点在于可视化、模块化了任务、建筑和Agents的定义,对于非开发者很友好

尽管目前来说项目的部署还存在问题,而且客户端 Unity 的代码没有开源,但是项目的设计和可扩展性是非常优秀的,未来也许会成为国产开源 Generative Agents 的标杆

后续笔者也会再写一到两篇文章对照论文来解析项目源码,有兴趣的可以点个收藏和关注


原创不易,转载请注明出处

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目简介
  • 搭建流程介绍:
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档