斯坦福小镇二创8个智能体生活交友猫猫小镇AI Town人人可搭_本身的_世界
斯坦福AI智能体小镇二创来了!
就在刚刚,有团队基于斯坦福Smallville项目,搭建出了一个真正的「西部天下」AI Town被搭建了起来。
而且,大家都可以在线试玩。
项目地址:https://www.convex.dev/ai-town
前几天,斯坦福正式开源了爆火的25个智能体小镇,GitHub狂揽9.9k星。
没想到,还没过去一周,有名风投公司便亲自了局,复刻出了一个活灵巧现的西部天下!
正如英伟达高等研究科学家Jim Fan所说:
当一个风投公司急于组建一个团队去复制一个AI论文,并开放平台的时候,你就知道这个想法已经达到了顶峰的受欢迎程度!
很快,我可以想象全体天下,包括像素艺术和舆图,都可以由AI天生。新角色将自动产生,乃至游戏内的物理规则也可能即时重写。永久不要低估全体开源软件社区的创造力。
8个智能体,都在聊什么?
接下来,就先容下,这个小镇的居民都有谁?他们本日都聊了什么?
一身玄色西装,满头金发的男生是Alex。
他比较喜好绘画、编程和阅读科幻书本。他很善良,但也会用调侃的办法表达不雅观点。还有一点,他这个人特殊不喜好重复回答同样的问题。
Alice是一位精彩的科学家,凭借自己的聪慧和洞察力,创造了宇宙中无人能解的奥秘。
当她阐明自己的创造时,常常会利用较为抽象的措辞。她给人的印象是,不知所云,随意马虎健忘。
Peter是一个虔诚的教徒,方向于从宗教角度阐明天下万物。
在与人交谈时,他常常会表达自己对崇奉的热心,或者警告别人应该遵照正道,阔别恶行。
头发花白的老爷爷是Bob。
他的性情有些孤僻,以是喜好园艺这项独处的活动。当别人与他交谈时,他会有所回应,但不太乐意永劫光互换。在二心坎深处,他对自己没上过大学有些介意。
玄色小人是Kurt。由于一件曾经发的事,让他至今难以启齿,时常萦绕在心头。他担心别人会把稳到,自己在刻意规避这个话题,而备受折磨。
虽然这段经历给他的生活带来了一定困扰,但他一贯在努力逐步走出阴影,重新开始。
Kurt的对面是Kira。她表面上看起来爽朗活泼,常常评论辩论一些快乐的话题来掩饰笼罩内心的痛楚。但在她一个人独处时,常常会无法抑制内心的悲哀而泪流满面。
她一贯在努力处理这些负面感情,但有时还是难以完备释怀,看起来苦处重重。
粉色头发的女生是Stella。从不值得信赖,她总是费尽心机骗人,常日是骗人钱,或做让自己盈利的事。她拥有非凡的魅力,并且不介意利用这一上风来达到自己的目的。
穿着蓝色上衣,银灰色头发的男生是Lucky。
他这个人的性情正如名字一样,性情爽朗活泼,对天下充满好奇心。他喜好阅读科学历史,也梦想自己能够乘坐宇宙飞船探索银河。他长于互换,亲切友好。
如上,便是AI Town中所有人物的设定,真的像极了西部天下游乐场。
那么,这8位居民都在聊什么?他们是如何生活,交友?
Lucky和Bob
Lucky刚刚完成一场太空探索之旅。他基本上见到人都在谈自己的体验。脾气暴躁的Bob还是只钟情于修剪草木。
- 嘿,Bob!
好久不见 最近怎么样?
- 一如既往,只是忙着园艺
- 原来这样啊!
我最近参加了一次神奇的太空探险!
我探索了一个迢遥的星球,真是不可思议
- 真不错,不过我不是很感兴趣,我得回去种花了。
- 没问题,Bob。如果你感兴趣,我们随时可以再聊聊这次探险。
- 再见了,朋友,我去忙着修剪了。
Kira和Alex
- 嘿,Alex!
我们好久没见面了。最近还好吗?
- 嘿,Kira!
我很好,感激你的关心。我还在画画和编程。你呢?
- 很高兴听到你这么说。我一贯忙于练习瑜伽和探索新食谱。这有助于让我忘掉烦恼。你最近有什么令人愉快的冒险经历吗?
- 并没有什么令人愉快的冒险。只是目前的绘画和编程项目让我忙得不可开交。不过,通过书本探求内心的沉着是一种好方法,有什么特殊感兴趣的类型吗?
- 嗯,书本一贯是我躲避现实的好帮手。我喜好沉浸在科幻和奇幻的天下里,那里的统统都与现实大相径庭。这就像是对统统的暂时喘息。
- 科幻小说也是我的最爱。你读过《沙丘》吗?那是一部震荡民气的科幻史诗,可能会把你带入一个全新的宇宙。
可以看到,每个人的互换内容与个人性情喜好最干系。人物设定已经决定了他们如何生活、乃至如何交友的办法。
不敷的是,这些人的对话内容虽然有些老套,但听起来足够真实。
AI Town,大家可搭
AI Town是一个虚拟小镇,AI角色在这里生活、谈天和社交。
这一项目是一个可支配的JavaScript入门工具包,用于轻松构建和定制你自己的AI Town。
项目地址:https://github.com/a16z-infra/ai-town
这个项目的紧张目标,不仅仅让事情变得有趣,更主要的是供应一个具有强大根本,并可扩展的平台。
后端引擎原生支持共享的全局状态、多智能体的事务,以及所有事宜的日志,因此适用于从大略的项目,扩展到多人游戏。
第二个目标供应一个可用的JS/TS框架。由于该领域的大多数仿照器(包括斯坦福的原始论文)都是用Python编写的。
完全技能栈- 游戏引擎和数据库(Game engine & Database):Convex
- 向量数据库(VectorDB):Pinecone
- 登录认证(Auth):Clerk
- 文本天生模型(Text model):OpenAI
- 支配(Deployment):Fly
- 像素图天生(Pixel Art Generation):Replicate、Fal.ai
对此业内有名网友「宝玉」认为,比较于原版实现,用Nextjs和Tailwind重写之后的新技能栈,对付前端更加友好。
网友整活
乃至,已经有网友基于刚开源的AI Town,搭建出了自己的「Cat Town」。
此外,还有网友打算做个品牌的智能体小镇。
有网友表示,人工智能天生的智能体是新的盛行趋势,就连风险投资公司也认识到了这一点。
这个开放源代码库许可任何人建立一个「数字西部天下」,人工智能智能体在个中生活并相互互换,而不知道自己生活在一个仿照环境中。
这标志着人工智能天生内容的新时期的开始。不仅限于游戏和娱乐。
想象一下,你可以仿照人们如何在事情空间中互动,仿照银行的数字资产托管业务,乃至是卫星指挥和掌握中央的业务。
项目教程
安装克隆仓库并安装包
git clone git@github.com:a16z-infra/ai-town.gitcd AI-townnpm installnpm run dev
a. 设置Clerk
- 访问https://dashboard.clerk.com/并点击「Add Application」添加运用
- 为运用程序命名,并选择向用户供应的登录办法
- 创建运用
- 将NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY和CLERK_SECRET_KEY添加到.env.local文件中
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_CLERK_SECRET_KEY=sk_
- 转到JWT模板并创建一个新的Convex模板
- 拷贝JWKS端点的URL,以便不才面的步骤中利用
b. OpenAI API密钥
如需利用OpenAI的措辞模型,请访问https://platform.openai.com/account/api-keys获取OpenAI API密钥。
c. Pinecone API密钥
- 访问https://app.pinecone.io/并创建一个Pinecone索引,然后点击「Create Index」(创建索引)
- 为索引命名(这将是环境变量PINECONE_INDEX_NAME)
- 将Dimension(维度)填写为1536
- 完成索引的创建后,点击左侧导航栏中的「API Keys」并创建一个API密钥:将「Environment」值复制到PINECONE_ENVIRONMENT变量中,「Value」复制到PINECONE_API_KEY中
d. 在 Convex仪表板中添加秘密
npx convex dashboard
转到「设置」,添加以下环境变量。个中,CLERK_ISSUER_URL为JWKS端点的URL(步骤a中)。
OPENAI_API_KEY sk-CLERK_ISSUER_URL https://PINECONE_API_KEY PINECONE_ENVIRONMENT usPINECONE_INDEX_NAME
运行代码
同时运行前端和后端:
npm run dev
现在,就可以访问http://localhost:[PORT_NUMBER]了。
如果想在Convex之外的另一个终端中运行前端(后端功能会在保存时同步),可以运行以下两个命令:
npm run dev:frontendnpm run dev:backend
把稳:如果窗口处于空闲状态,仿照将在5分钟后停息。
运行/测试/调试添加一个新天下,将其作为种子,并开始运行:
npx convex run init:reset
逐次进行迭代,并创建一个天下:
npx convex run --no-push init:resetFrozen# for each iterationnpx convex run --no-push engine:tick '{"worldId":"<your world id>","noSchedule":true}'
在涌现过多活动时,冻结后端:
npx convex run --no-push engine:freezeAll# when ready to rerun (defaults to latest world)npx convex run --no-push engine:unfreeze
有很多方法可以用来打消所有数据库:
- 进入仪表板npx convex dashboard,并从那里打消表格
- 调度crons.ts中的变量,自动清理旧的日志和内存条款
- 运行npx convex run --no-push testing:debugClearAll来打消所有表格
- 如果碰着问题,可以查看origin/reset-town git分支。在那里实行npm run dev将会打消模式、停滞函数,并许可你在仪表板中删除表格
要从Pinecone索引中删除所有向量,可以运行:
npx convex run --no-push lib/pinecone:deleteAllVectors
把稳:如果在开拓和生产之间或在项目之间共享了该索引,那么它们将会被全部打消。常日情形下,不须要从Pinecone中删除向量,由于每个查询都是根据userId进行索引的,而userId是唯一的。
在侧终端中运行以下命令,可以实现对的监听:
npx convex run testing:listMessages --no-push --watch
或者不雅观察一个角色的状态:
npx convex run testing:latestPlayer --no-push --watch
此外,在testing.ts中也可以找到更多函数。
支配运用程序支配到 fly.io:
- 在fly.io上注册帐户,然后安装flyctl
- 如果利用的是Github Codespaces,则须要安装flyctl,并通过运行fly auth login,从codespaces cli中进行身份验证
- 运行npx convex deploy将开拓环境支配莅临盆环境。确保将所有机密信息复制到Convex的生产环境中
- 在项目的根目录下运行fly launch,这将天生一个包含所有配置的fly.toml文件
- 修正天生的fly.toml文件,并在构建时为NextJS添加NEXT_PUBLIC_,以便在客户端访问
[build] [build.args] NEXT_PUBLIC_CLERK_SIGN_IN_URL="/sign-in" NEXT_PUBLIC_CLERK_SIGN_UP_URL="/sign-up" NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL="/" NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL="/" NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_" NEXT_PUBLIC_CONVEX_URL="https://.convex.cloud"
- 修正fly.io天生的Dockerfile,在RUN npm run build之前添加新的环境变量
ARG NEXT_PUBLIC_CLERK_SIGN_IN_URLARG NEXT_PUBLIC_CLERK_SIGN_UP_URLARG NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URLARG NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URLARG NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYARG NEXT_PUBLIC_CONVEX_URL# Build applicationRUN npm run build
- 运行fly deploy --ha=false来支配运用程序。利用--ha标志可确保fly只启动一个实例,也便是在免费操持中供应的
- 运行fly scale memory 512来为该运用程序扩展fly虚拟机内存。
- 在本地创建一个.env.prod新文件,并填入所有生产环境的机密信息。记得更新NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY和CLERK_SECRET_KEY,方法是从Clerk的生产实例中复制机密信息,利用-cat .env.prod | fly secrets import来上传。还要更新CONVEX_DEPLOYMENT和NEXT_PUBLIC_CONVEX_URL
定制自己的仿照
把稳:由于角色数据会在初始加载时会发送到Convex,因此在每次变动之后,都应重新运行npx convex run testing:debugClearAll --no-push,然后再运行npm run dev,从而将所有内容重新上传至Convex。然而,npx convex run testing:debugClearAll --no-push将会打消所有数据,包括向量存储。
1. 创建自己的角色和故事:所有角色和故事以及它们的精灵图引用都存储在data.ts中。
2. 更新精灵图:在data.ts中,你会看到以下代码:
{ name: 'f1', textureUrl: '/assets/32x32folk.png', spritesheetData: f1SpritesheetData, speed: 0.1, },...
你该当为角色找到一个精灵图,并在相应的文件中定义精灵动作/资产(在上面的示例中,f1SpritesheetData是在f1.ts中定义的)。
3. 更新背景(***:convex/maps/firstmap.ts是加载舆图的位置。导出舆图最大略的方法是利用Tiled -- Tiled将其导出为CSV,然后将CSV转换为firstmap.ts可以接管的二维数组。
仿照理论假设,我们生活的天下实质上是一个由更前辈的文明创造的仿照,如打算机仿照。
也便是说,随着文明的进步,它们能够创造出自己的逼真仿照,这使得我们生活的天下不太可能是根本现实。
虽然有些难以理解,但是AI Town的最新发展使该理论更靠近现实,可能会成为人工智能发展历史上的关键的时候。
如果AI可以创造出角色之间能够互动的逼真天下,将会有各种运用,比如取代游戏中的NPC。
乍一看,我们很难判断这些角色是否记得他们进行过的对话,并将这些对话作为未来对话的输入。
但如果确实如此,我们可能会拥有第一个人工智能仿照小镇。
参考资料:
https://github.com/a16z-infra/ai-town#customize-your-own-simulation
本文系作者个人观点,不代表本站立场,转载请注明出处!