开源项目介绍 —— AI Town
前言
我打算开一个新系列 —— 每周(或者每两三周)了解一个开源项目。
开源世界就像一座宝库,总能发现一些奇奇怪怪的项目,更别说那些 star 数量上千的,几乎凝结着全球开发者的智慧……
至于这些项目能怎么用?是技术上避免重复造轮子,还是包装一下忽悠投资人,还是加入 Github 以码会友 …… 各位自行取舍。
我只是收藏夹里存了很多开源项目,人到中年应该筛选一下,做点总结,于是有了这个系列。
今日项目 —— AI Town
1. 基本介绍
AI Town 是一款 2D 动画风格的应用,其中包含了很多独具个性的 AI 角色,支持用户与角色进行交流互动:
这个项目在 GitHub 上收获 9K stars,网址见参考链接 [1]。
它的灵感源自 Stanford 的研究论文《Generative Agents: Interactive Simulacra of Human Behavior》,虽然目前尚未实现 “虚拟人生” 里的复杂游戏情节,但作为一款开源项目,目的是提供一个强大的扩展平台,帮助开发者构建和定制个性化的模拟世界。
2. 技术栈
- 后端平台:Convex 托管式后端,支持 TypeScript 开发数据库,具备自动缓存、数据订阅及实时查询功能。
- 大模型:默认采用 mxbai-embed-large 嵌入模型与 llama3 对话模型,兼容 Together.ai 及 OpenAI API,支持云端调用或代理本地 Ollama 运行。
- 游戏素材:通过 Replicate、Fal.ai 生成 Pixel Art(像素画),采用 Tilesheet 搭建地图背景。
- 音乐素材:通过 MusicGen 生成项目所需背景音乐。
- 游戏引擎:基于 PixiJS 实现交互逻辑、背景音乐播放及组件渲染。
3. Demo 运行
项目有多种部署运行方式,像 Convex Cloud、Docker、Pinokio、Fly.io 都能支持。
同时它还提供了可以直接在线体验的 Demo,分别托管在 Convex 和 Huggingface ,地址见参考链接 [2] [3] 。
我试下来效果如下,比如点击一个叫 “Stella” 的 AI 角色,主角会走近她进行对话:
在这个人物介绍中提到 “Stella can never be trusted. She tries to trick people all the time. Normally into giving her money, or doing things that will make her money.”
在实际对话里也可以看到,她使用投资理财话术,与用户分享赚钱机会,实际是为了让你上当。
4. 定制化角色
在 characters.ts 文件(参考链接 [4])中可以自定义角色与故事,我感觉这些描述与大模型的提示词相关,相当于给 AI 角色制定人设。
想要快速上手的话,可以修改/创造角色,比如下面这段就是对 Stella 的角色描述:
5. 如何参与?
项目本身的 good-first-issue 数量较少,不太适合入门级新手参与。
主页说受欢迎的 PR 方向为新增云服务平台支持,例如对接更多 LLM API。
总结
今天介绍了 AI Town, 它是一款 2D 动画风格的开发平台,助力开发者自定义 AI 角色、AI NPC 及模拟世界。
参考资料
- https://github.com/a16z-infra/ai-town
- https://www.convex.dev/ai-town
- https://huggingface.co/spaces/radames/ai-town
- https://github.com/a16z-infra/ai-town/blob/main/data/characters.ts
欢迎关注我的微信公众号“疯狂的运放”,及时收到最新的推文。