简介
AI Town是由风险投资公司Andreessen Horowitz(a16z)与Convex Dev合作开发的开源项目,是一个可部署的入门工具包,用于构建和定制自己的AI虚拟城镇版本。该项目受到斯坦福大学《Generative Agent: Interactive Simulacra of Human Behavior》研究论文的启发,创建了一个虚拟城镇,AI角色可以在其中生活、聊天和社交。
核心价值:
开源免费:采用MIT许可证,完全免费且支持商业使用
高度可定制:支持自定义角色、故事、环境和游戏规则
技术先进:基于现代Web技术栈,提供强大的后端支持
多场景应用:从简单的项目到可扩展的多人游戏
技术特色:AI Town使用TypeScript/JavaScript完成前后端全栈开发,避免了传统Python模拟器的局限性。后端采用Convex作为游戏引擎、数据库和向量搜索工具,支持共享全局状态、事务和所有事件的日志记录,确保角色交互和叙事的连续性和演变。
主要功能
1. AI角色互动系统
AI Town的核心是生成式智能体(Generative Agents),每个AI角色都有独特的个性和行为模式。角色在创建时会收到一个起始提示,该提示塑造角色的性格并作为其交互和行为的基础。当AI角色彼此互动时,他们会保留对话的记忆,确保今后互动的连续性,为每个角色带来独特的叙事。
2. 虚拟环境构建
项目提供完整的虚拟城镇环境,包括地图、建筑、场景等视觉元素。使用Tiled工具可以轻松创建和编辑瓷砖地图,支持CSV格式导出。像素艺术生成功能通过Replicate和Fal.ai实现,背景音乐生成使用MusicGen,为虚拟世界增添沉浸感。
3. 对话生成与记忆管理
基于OpenAI的语言模型,AI角色能够进行真实且连贯的对话。Pinecone向量数据库用于存储和检索对话记忆,确保角色能够记住过去的交流并基于此调整行为。这种记忆流机制使得AI角色能够像真正的人一样,根据过去的经历调整行为。
4. 本地推理支持
项目支持使用Ollama进行本地推理,用户可以在本地运行大语言模型而无需依赖云端服务。通过Tunnelmole或Ngrok隧道工具,本地模型可以与Convex后端无缝集成,实现完全离线的AI角色对话生成。
5. 可扩展架构
AI Town的设计目标是提供一个具有可扩展性的强大基础平台。后端原生支持共享全局状态、事务和模拟引擎,适用于从简单的项目到可扩展的多人游戏的各种场景。开发者可以轻松添加新功能、自定义角色行为、扩展游戏规则。
安装与配置
环境要求
系统要求:
Node.js 14.x或更高版本
npm包管理器
稳定的网络连接(用于下载依赖和API密钥配置)
推荐8GB以上内存
安装步骤
第一步:克隆项目仓库
git clone https://github.com/a16z-infra/ai-town.git cd ai-town npm install第二步:配置Clerk身份验证
访问https://dashboard.clerk.com/并创建应用
获取NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY和CLERK_SECRET_KEY
在.env.local文件中添加这些密钥
创建JWT模板并获取JWKS端点URL
第三步:配置OpenAI API密钥
访问https://platform.openai.com/account/api-keys获取API密钥,在Convex仪表板中设置OPENAI_API_KEY环境变量。
第四步:配置Pinecone向量数据库
访问https://app.pinecone.io/创建索引
设置维度为1536
获取PINECONE_INDEX_NAME、PINECONE_ENVIRONMENT和PINECONE_API_KEY
在Convex仪表板中添加这些环境变量
第五步:启动应用
npm run dev访问http://localhost:5173即可查看运行中的AI Town。
本地推理配置(可选)
如需使用本地Ollama模型:
安装Ollama并启动服务
使用Tunnelmole或Ngrok创建隧道
在Convex仪表板中设置OLLAMA_HOST环境变量
可选设置ACTION_TIMEOUT和NUM_MEMORIES_TO_SEARCH参数
如何使用
基础使用
启动应用后,用户可以通过浏览器访问AI Town界面。界面采用像素游戏风格,AI角色会在虚拟城镇中自由活动、聊天和社交。用户可以通过点击角色查看他们的对话内容,也可以通过Interact功能与AI角色进行互动。
自定义角色和故事
所有角色和故事数据存储在characters.ts文件中。开发者可以通过修改角色描述、精灵表引用和速度参数来创建自定义角色。精灵表可以使用Tiled工具创建,支持CSV格式导出。
修改地图和环境
地图数据存储在data/firstmap.ts文件中,使用二维数组表示。开发者可以使用Tiled工具编辑地图,然后将CSV格式的地图转换为项目可接受的格式。背景音乐可以通过修改convex/music.ts中的提示来更改。
高级功能
冻结和解冻世界:界面提供按钮可以手动冻结和解冻虚拟世界,控制AI角色的活动状态。
归档世界:通过npx convex run testing:archive命令可以归档当前世界,然后使用npx convex run init创建全新的世界。
清除数据:使用npx convex run testing:wipeAllTables命令可以清除所有表格数据,重新开始。
部署到生产环境
项目支持部署到Vercel平台:
在Vercel上注册账号并安装Vercel CLI
运行npx convex deploy部署Convex函数
运行npx convex run init --prod初始化生产环境
使用vercel --prod部署应用到Vercel
应用场景实例
实例1:教育领域的虚拟学习环境
某在线教育平台需要为学生提供沉浸式的学习体验,要求系统能够模拟历史人物、科学家等角色,让学生通过与AI角色互动来学习知识。使用AI Town构建虚拟历史小镇,创建孔子、爱因斯坦等历史人物的AI角色。学生可以与这些角色对话,了解他们的思想和成就,提升学习兴趣和效果。系统支持多语言对话,覆盖不同国家的学生需求。
实例2:企业培训模拟场景
某大型企业需要为员工提供销售技巧培训,要求系统能够模拟客户对话场景,让员工在与AI客户的互动中练习销售话术和应对技巧。使用AI Town创建虚拟商业环境,设计不同类型的客户角色(如挑剔型、犹豫型、冲动型等)。员工可以与这些AI客户进行模拟对话,系统自动记录对话内容并生成分析报告,帮助员工改进销售技巧。
实例3:心理健康陪伴应用
某心理健康应用需要为用户提供情感支持和陪伴,要求系统能够模拟心理咨询师或朋友的角色,与用户进行自然对话,提供情感支持和心理疏导。使用AI Town构建温馨的虚拟社区,创建具有同理心和专业知识的AI陪伴角色。用户可以在安全、私密的环境中与AI角色分享心事、寻求建议,获得情感支持和心理安慰。
实例4:社交研究实验平台
某大学研究团队需要研究人类社交行为的动态变化,要求系统能够模拟大规模社交网络,观察AI角色之间的互动模式和关系发展。使用AI Town构建虚拟社交实验场,创建数百个具有不同性格特征的AI角色。研究人员可以设置不同的社交规则和环境条件,观察AI角色的行为变化、关系形成和社区演化,为社会学和心理学研究提供数据支持。
实例5:游戏NPC行为模拟
某游戏开发公司需要为开放世界游戏设计智能NPC,要求NPC能够根据玩家的行为做出智能反应,形成动态的社交网络和故事线。使用AI Town作为NPC行为模拟引擎,创建具有记忆和情感能力的AI角色。NPC能够记住与玩家的互动历史,根据玩家的选择调整行为,形成独特的游戏体验。系统支持大规模NPC并发,确保游戏世界的真实性和沉浸感。
实例6:多语言文化交流平台
某文化交流组织需要搭建跨语言文化交流平台,要求系统能够支持多语言对话,让不同国家的用户通过AI角色进行文化交流。使用AI Town构建国际化的虚拟城镇,集成多语言翻译功能。用户可以选择自己的母语与AI角色对话,系统自动翻译并保持对话的连贯性。AI角色能够介绍本国文化、回答文化相关问题,促进跨文化理解和交流。
GitHub地址
项目地址:https://github.com/a16z-infra/ai-town
相关资源:
官方文档:项目README.md提供详细的使用指南和技术说明
在线演示:https://www.convex.dev/ai-town
社区支持:Discord社区AI Stack Devs
技术白皮书:https://arxiv.org/pdf/2304.03442.pdf
项目信息:
⭐ Stars:超过3.0k星标(持续增长中)
📄 许可证:MIT
💻 主要语言:TypeScript/JavaScript
📅 最近更新:持续维护
快速开始:
访问GitHub仓库,给项目点个Star支持
按照README文档完成环境配置
配置必要的API密钥
运行npm run dev启动应用
访问http://localhost:5173体验AI Town
注意事项:
首次使用需要配置多个第三方服务的API密钥
建议使用稳定的网络环境,部分服务可能需要访问外网
生产环境部署建议进行性能测试和参数调优
使用AI技术需遵守相关法律法规和伦理准则
建议定期检查更新,获取最新功能和性能优化