前言

我打算开一个新系列 —— 每周(或者每两三周)了解一个开源项目。

开源世界就像一座宝库,总能发现一些奇奇怪怪的项目,更别说那些 star 数量上千的,几乎凝结着全球开发者的智慧……

至于这些项目能怎么用?是技术上避免重复造轮子,还是包装一下忽悠投资人,还是加入 Github 以码会友 …… 各位自行取舍。

我只是收藏夹里存了很多开源项目,人到中年应该筛选一下,做点总结,于是有了这个系列。


今日项目 —— AI Town

1. 基本介绍

AI Town 是一款 2D 动画风格的应用,其中包含了很多独具个性的 AI 角色,支持用户与角色进行交流互动:

图1 AI Town 介绍

图1 AI Town 介绍

这个项目在 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 角色,主角会走近她进行对话:

图2 图2 AI 角色举例(Stella)

图2 AI 角色举例(Stella)

图3 与 Stella 对话

图3 与 Stella 对话

在这个人物介绍中提到 “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 的角色描述:

图4 自定义 AI 角色方式

图4 自定义 AI 角色方式

5. 如何参与?

项目本身的 good-first-issue 数量较少,不太适合入门级新手参与。

主页说受欢迎的 PR 方向为新增云服务平台支持,例如对接更多 LLM API。


总结

今天介绍了 AI Town, 它是一款 2D 动画风格的开发平台,助力开发者自定义 AI 角色、AI NPC 及模拟世界。

参考资料

  1. https://github.com/a16z-infra/ai-town
  2. https://www.convex.dev/ai-town
  3. https://huggingface.co/spaces/radames/ai-town
  4. https://github.com/a16z-infra/ai-town/blob/main/data/characters.ts

欢迎关注我的微信公众号“疯狂的运放”,及时收到最新的推文。