斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

1 評(píng)論 14241 瀏覽 12 收藏 21 分鐘

前幾天,斯坦福開源了爆火的25個(gè)智能體小鎮(zhèn),而就在爆火的斯坦福小鎮(zhèn)開源一周后,有人就開始“二創(chuàng)”了,并搭建起了人工智能模擬小鎮(zhèn)AI Town。一起來看看本文的解讀和分析。

斯坦福AI智能體小鎮(zhèn)二創(chuàng)來了!

就在剛剛,有團(tuán)隊(duì)基于斯坦福Smallville項(xiàng)目,搭建出了一個(gè)真正的「西部世界」AI Town被搭建了起來。

而且,人人都可以在線試玩。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

項(xiàng)目地址:https://www.convex.dev/ai-town

前幾天,斯坦福正式開源了爆火的25個(gè)智能體小鎮(zhèn),GitHub狂攬9.9k星。

沒想到,還沒過去一周,知名風(fēng)投公司便親自下場(chǎng),復(fù)刻出了一個(gè)活靈活現(xiàn)的西部世界!

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

正如英偉達(dá)高級(jí)研究科學(xué)家Jim Fan所說:

當(dāng)一個(gè)風(fēng)投公司急于組建一個(gè)團(tuán)隊(duì)去復(fù)制一個(gè)AI論文,并開放平臺(tái)的時(shí)候,你就知道這個(gè)想法已經(jīng)達(dá)到了巔峰的受歡迎程度!

很快,我可以想象整個(gè)世界,包括像素藝術(shù)和地圖,都可以由AI生成。新角色將自動(dòng)產(chǎn)生,甚至游戲內(nèi)的物理規(guī)則也可能即時(shí)重寫。永遠(yuǎn)不要低估整個(gè)開源軟件社區(qū)的創(chuàng)造力。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

一、8個(gè)智能體,都在聊什么?

接下來,就介紹下,這個(gè)小鎮(zhèn)的居民都有誰(shuí)?他們今天都聊了什么?

一身黑色西裝,滿頭金發(fā)的男生是Alex。

他比較喜歡繪畫、編程和閱讀科幻書籍。他很善良,但也會(huì)用調(diào)侃的方式表達(dá)觀點(diǎn)。還有一點(diǎn),他這個(gè)人特別不喜歡重復(fù)回答同樣的問題。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

Alice是一位杰出的科學(xué)家,憑借自己的智慧和洞察力,發(fā)現(xiàn)了宇宙中無人能解的奧秘。

當(dāng)她解釋自己的發(fā)現(xiàn)時(shí),常常會(huì)使用較為抽象的語(yǔ)言。她給人的印象是,不知所云,容易健忘。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

Peter是一個(gè)虔誠(chéng)的教徒,傾向于從宗教角度解釋世界萬(wàn)物。

在與人交談時(shí),他經(jīng)常會(huì)表達(dá)自己對(duì)信仰的熱忱,或者警告別人應(yīng)當(dāng)遵循正道,遠(yuǎn)離罪惡。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

頭發(fā)花白的老爺爺是Bob。

他的性格有些孤僻,所以喜歡園藝這項(xiàng)獨(dú)處的活動(dòng)。當(dāng)別人與他交談時(shí),他會(huì)有所回應(yīng),但不太愿意長(zhǎng)時(shí)間交流。在他內(nèi)心深處,他對(duì)自己沒上過大學(xué)有些介意。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

黑色小人是Kurt。因?yàn)橐患?jīng)發(fā)的事,讓他至今難以啟齒,時(shí)常縈繞在心頭。他擔(dān)心別人會(huì)注意到,自己在刻意規(guī)避這個(gè)話題,而備受折磨。

雖然這段經(jīng)歷給他的生活帶來了一定困擾,但他一直在努力慢慢走出陰影,重新開始。

Kurt的對(duì)面是Kira。她表面上看起來開朗活潑,經(jīng)常談?wù)撘恍┛鞓返脑掝}來掩飾內(nèi)心的痛苦。但在她一個(gè)人獨(dú)處時(shí),經(jīng)常會(huì)無法抑制內(nèi)心的悲傷而淚流滿面。

她一直在努力處理這些負(fù)面情緒,但有時(shí)還是難以完全釋懷,看起來心事重重。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

粉色頭發(fā)的女生是Stella。從不值得信任,她總是想方設(shè)法騙人,通常是騙人錢,或做讓自己盈利的事。她擁有非凡的魅力,并且不介意利用這一優(yōu)勢(shì)來達(dá)到自己的目的。

穿著藍(lán)色上衣,銀灰色頭發(fā)的男生是Lucky。

他這個(gè)人的性格正如名字一樣,性格開朗活潑,對(duì)世界充滿好奇心。他喜歡閱讀科學(xué)歷史,也夢(mèng)想自己能夠乘坐宇宙飛船探索銀河。他善于交流,親切友好。

如上,便是AI Town中所有人物的設(shè)定,真的像極了西部世界游樂場(chǎng)。

那么,這8位居民都在聊什么?他們是如何生活,交友?

Lucky和Bob

Lucky剛剛完成一場(chǎng)太空探索之旅。他基本上見到人都在談自己的體驗(yàn)。脾氣暴躁的Bob還是只鐘情于修剪草木。

– 嘿,Bob!好久不見 最近怎么樣?

– 一如既往,只是忙著園藝

– 原來這樣??!我最近參加了一次神奇的太空探險(xiǎn)!我探索了一個(gè)遙遠(yuǎn)的星球,真是不可思議

– 真不錯(cuò),不過我不是很感興趣,我得回去種花了。

– 沒問題,Bob。如果你感興趣,我們隨時(shí)可以再聊聊這次探險(xiǎn)。

– 再見了,朋友,我去忙著修剪了。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

Kira和Alex

– 嘿,Alex!我們好久沒見面了。最近還好嗎?

– 嘿,Kira!我很好,謝謝你的關(guān)心。我還在畫畫和編程。你呢?

– 很高興聽到你這么說。我一直忙于練習(xí)瑜伽和探索新食譜。這有助于讓我忘掉煩惱。你最近有什么令人興奮的冒險(xiǎn)經(jīng)歷嗎?

– 并沒有什么令人興奮的冒險(xiǎn)。只是目前的繪畫和編程項(xiàng)目讓我忙得不可開交。不過,通過書籍尋找內(nèi)心的平靜是一種好方法,有什么特別感興趣的類型嗎?

– 嗯,書籍一直是我逃避現(xiàn)實(shí)的好幫手。我喜歡沉浸在科幻和奇幻的世界里,那里的一切都與現(xiàn)實(shí)大相徑庭。這就像是對(duì)一切的暫時(shí)喘息。

– 科幻小說也是我的最愛。你讀過《沙丘》嗎?那是一部震撼人心的科幻史詩(shī),可能會(huì)把你帶入一個(gè)全新的宇宙。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

可以看到,每個(gè)人的交流內(nèi)容與個(gè)人性格喜好最相關(guān)。人物設(shè)定已經(jīng)決定了他們?nèi)绾紊?、甚至如何交友的方式?/p>

不足的是,這些人的對(duì)話內(nèi)容雖然有些老套,但聽起來足夠真實(shí)。

二、AI Town,人人可搭

AI Town是一個(gè)虛擬小鎮(zhèn),AI角色在這里生活、聊天和社交。

這一項(xiàng)目是一個(gè)可部署的JavaScript入門工具包,用于輕松構(gòu)建和定制你自己的AI Town。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

項(xiàng)目地址:https://github.com/a16z-infra/ai-town

這個(gè)項(xiàng)目的主要目標(biāo),不僅僅讓工作變得有趣,更重要的是提供一個(gè)具有強(qiáng)大基礎(chǔ),并可擴(kuò)展的平臺(tái)。

后端引擎原生支持共享的全局狀態(tài)、多智能體的事務(wù),以及所有事件的日志,因此適用于從簡(jiǎn)單的項(xiàng)目,擴(kuò)展到多人游戲。

第二個(gè)目標(biāo)提供一個(gè)可用的JS/TS框架。因?yàn)樵擃I(lǐng)域的大多數(shù)模擬器(包括斯坦福的原始論文)都是用Python編寫的。

完整技術(shù)棧

– 游戲引擎和數(shù)據(jù)庫(kù)(Game engine & Database):Convex

– 向量數(shù)據(jù)庫(kù)(VectorDB):Pinecone

– 登錄認(rèn)證(Auth):Clerk

– 文本生成模型(Text model):OpenAI

– 部署(Deployment):Fly

– 像素圖生成(Pixel Art Generation):Replicate、Fal.ai

對(duì)此業(yè)內(nèi)知名網(wǎng)友「寶玉」認(rèn)為,相比于原版實(shí)現(xiàn),用Nextjs和Tailwind重寫之后的新技術(shù)棧,對(duì)于前端更加友好。

三、網(wǎng)友整活

甚至,已經(jīng)有網(wǎng)友基于剛開源的AI Town,搭建出了自己的「Cat Town」。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

此外,還有網(wǎng)友打算做個(gè)品牌的智能體小鎮(zhèn)。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

有網(wǎng)友表示,人工智能生成的智能體是新的流行趨勢(shì),就連風(fēng)險(xiǎn)投資公司也認(rèn)識(shí)到了這一點(diǎn)。

這個(gè)開放源代碼庫(kù)允許任何人建立一個(gè)「數(shù)字西部世界」,人工智能智能體在其中生活并相互交流,而不知道自己生活在一個(gè)模擬環(huán)境中。

這標(biāo)志著人工智能生成內(nèi)容的新時(shí)代的開始。不僅限于游戲和娛樂。

想象一下,你可以模擬人們?nèi)绾卧诠ぷ骺臻g中互動(dòng),模擬銀行的數(shù)字資產(chǎn)托管業(yè)務(wù),甚至是衛(wèi)星指揮和控制中心的業(yè)務(wù)。

斯坦福小鎮(zhèn)二創(chuàng)來了!8個(gè)智能體生活交友,爆火AI Town人人可搭,網(wǎng)友整活「貓貓小鎮(zhèn)」|附教程

四、項(xiàng)目教程

1. 安裝

1)克隆倉(cāng)庫(kù)并安裝包

git clone git@github.com:a16z-infra/ai-town.git

cd AI-town

npm install

npm run dev

a. 設(shè)置Clerk

– 訪問https://dashboard.clerk.com/并點(diǎn)擊「Add Application」添加應(yīng)用

– 為應(yīng)用程序命名,并選擇向用戶提供的登錄方式

– 創(chuàng)建應(yīng)用

– 將NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY和CLERK_SECRET_KEY添加到.env.local文件中

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_***

CLERK_SECRET_KEY=sk_***

– 轉(zhuǎn)到JWT模板并創(chuàng)建一個(gè)新的Convex模板

– 拷貝JWKS端點(diǎn)的URL,以便在下面的步驟中使用

b. OpenAI API密鑰

如需使用OpenAI的語(yǔ)言模型,請(qǐng)?jiān)L問https://platform.openai.com/account/api-keys獲取OpenAI API密鑰。

c. Pinecone API密鑰

– 訪問https://app.pinecone.io/并創(chuàng)建一個(gè)Pinecone索引,然后點(diǎn)擊「Create Index」(創(chuàng)建索引)

– 為索引命名(這將是環(huán)境變量PINECONE_INDEX_NAME)

– 將Dimension(維度)填寫為1536

– 完成索引的創(chuàng)建后,點(diǎn)擊左側(cè)導(dǎo)航欄中的「API Keys」并創(chuàng)建一個(gè)API密鑰:將「Environment」值復(fù)制到PINECONE_ENVIRONMENT變量中,「Value」復(fù)制到PINECONE_API_KEY中

d. 在 Convex儀表板中添加秘密

npx convex dashboard

轉(zhuǎn)到「設(shè)置」,添加以下環(huán)境變量。其中,CLERK_ISSUER_URL為JWKS端點(diǎn)的URL(步驟a中)。

OPENAI_API_KEY sk-*

CLERK_ISSUER_URL https://*

PINECONE_API_KEY **

PINECONE_ENVIRONMENT us*

PINECONE_INDEX_NAME **

2)運(yùn)行代碼

同時(shí)運(yùn)行前端和后端:

npm run dev

現(xiàn)在,就可以訪問http://localhost:[PORT_NUMBER]了。

如果想在Convex之外的另一個(gè)終端中運(yùn)行前端(后端功能會(huì)在保存時(shí)同步),可以運(yùn)行以下兩個(gè)命令:

npm run dev:frontend

npm run dev:backend

注意:如果窗口處于空閑狀態(tài),模擬將在5分鐘后暫停。

3)運(yùn)行/測(cè)試/調(diào)試

添加一個(gè)新世界,將其作為種子,并開始運(yùn)行:

npx convex run init:reset

逐次進(jìn)行迭代,并創(chuàng)建一個(gè)世界:

npx convex run –no-push init:resetFrozen

 

# for each iteration

npx convex run –no-push engine:tick ‘{“worldId”:”<your world id>”,”noSchedule”:true}’

在出現(xiàn)過多活動(dòng)時(shí),凍結(jié)后端:

npx convex run –no-push engine:freezeAll

 

# when ready to rerun (defaults to latest world)

npx convex run –no-push engine:unfreeze

有很多方法可以用來清除所有數(shù)據(jù)庫(kù):

– 進(jìn)入儀表板npx convex dashboard,并從那里清除表格

– 調(diào)整crons.ts中的變量,自動(dòng)清理舊的日志和內(nèi)存條目

– 運(yùn)行npx convex run –no-push testing:debugClearAll來清除所有表格

– 如果遇到問題,可以查看origin/reset-town git分支。在那里執(zhí)行npm run dev將會(huì)清除模式、停止函數(shù),并允許你在儀表板中刪除表格

要從Pinecone索引中刪除所有向量,可以運(yùn)行:

npx convex run –no-push lib/pinecone:deleteAllVectors

注意:如果在開發(fā)和生產(chǎn)之間或在項(xiàng)目之間共享了該索引,那么它們將會(huì)被全部清除。通常情況下,不需要從Pinecone中刪除向量,因?yàn)槊總€(gè)查詢都是根據(jù)userId進(jìn)行索引的,而userId是唯一的。

在側(cè)終端中運(yùn)行以下命令,可以實(shí)現(xiàn)對(duì)消息的監(jiān)聽:

npx convex run testing:listMessages –no-push –watch

或者觀察一個(gè)角色的狀態(tài):

npx convex run testing:latestPlayer –no-push –watch

此外,在testing.ts中也可以找到更多函數(shù)。

4)部署應(yīng)用程序

部署到 fly.io:

– 在fly.io上注冊(cè)帳戶,然后安裝flyctl

– 如果使用的是Github Codespaces,則需要安裝flyctl,并通過運(yùn)行fly auth login,從codespaces cli中進(jìn)行身份驗(yàn)證

– 運(yùn)行npx convex deploy將開發(fā)環(huán)境部署到生產(chǎn)環(huán)境。確保將所有機(jī)密信息復(fù)制到Convex的生產(chǎn)環(huán)境中

– 在項(xiàng)目的根目錄下運(yùn)行fly launch,這將生成一個(gè)包含所有配置的fly.toml文件

– 修改生成的fly.toml文件,并在構(gòu)建時(shí)為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之前添加新的環(huán)境變量

ARG NEXT_PUBLIC_CLERK_SIGN_IN_URL

ARG NEXT_PUBLIC_CLERK_SIGN_UP_URL

ARG NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL

ARG NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL

ARG NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY

ARG NEXT_PUBLIC_CONVEX_URL

 

# Build application

RUN npm run build

– 運(yùn)行fly deploy –ha=false來部署應(yīng)用程序。使用–ha標(biāo)志可確保fly只啟動(dòng)一個(gè)實(shí)例,也就是在免費(fèi)計(jì)劃中提供的

– 運(yùn)行fly scale memory 512來為該應(yīng)用程序擴(kuò)展fly虛擬機(jī)內(nèi)存。

– 在本地創(chuàng)建一個(gè).env.prod新文件,并填入所有生產(chǎn)環(huán)境的機(jī)密信息。記得更新 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY和CLERK_SECRET_KEY,方法是從Clerk的生產(chǎn)實(shí)例中復(fù)制機(jī)密信息,使用-cat .env.prod | fly secrets import來上傳。還要更新CONVEX_DEPLOYMENT和NEXT_PUBLIC_CONVEX_URL

五、定制自己的模擬

注意:由于角色數(shù)據(jù)會(huì)在初始加載時(shí)會(huì)發(fā)送到Convex,因此在每次更改之后,都應(yīng)重新運(yùn)行npx convex run testing:debugClearAll –no-push,然后再運(yùn)行npm run dev,從而將所有內(nèi)容重新上傳至Convex。然而,npx convex run testing:debugClearAll –no-push將會(huì)清除所有數(shù)據(jù),包括向量存儲(chǔ)。

1. 創(chuàng)建自己的角色和故事:所有角色和故事以及它們的精靈圖引用都存儲(chǔ)在data.ts中。

2. 更新精靈圖:在data.ts中,你會(huì)看到以下代碼:

{

name: ‘f1’,

textureUrl: ‘/assets/32x32folk.png’,

spritesheetData: f1SpritesheetData,

speed: 0.1,

},…

你應(yīng)該為角色找到一個(gè)精靈圖,并在相應(yīng)的文件中定義精靈動(dòng)作/資產(chǎn)(在上面的示例中,f1SpritesheetData是在f1.ts中定義的)。

3. 更新背景(環(huán)境):convex/maps/firstmap.ts是加載地圖的位置。導(dǎo)出地圖最簡(jiǎn)單的方法是使用Tiled — Tiled將其導(dǎo)出為CSV,然后將CSV轉(zhuǎn)換為firstmap.ts可以接受的二維數(shù)組。

模擬理論假設(shè),我們生活的世界本質(zhì)上是一個(gè)由更先進(jìn)的文明創(chuàng)造的模擬,如計(jì)算機(jī)模擬。

也就是說,隨著文明的進(jìn)步,它們能夠創(chuàng)造出自己的逼真模擬,這使得我們生活的世界不太可能是基礎(chǔ)現(xiàn)實(shí)。

雖然有些難以理解,但是AI Town的最新發(fā)展使該理論更接近現(xiàn)實(shí),可能會(huì)成為人工智能發(fā)展歷史上的關(guān)鍵的時(shí)刻。

如果AI可以創(chuàng)造出角色之間能夠互動(dòng)的逼真世界,將會(huì)有各種應(yīng)用,比如取代游戲中的NPC。

乍一看,我們很難判斷這些角色是否記得他們進(jìn)行過的對(duì)話,并將這些對(duì)話作為未來對(duì)話的輸入。

但如果確實(shí)如此,我們可能會(huì)擁有第一個(gè)人工智能模擬小鎮(zhèn)。

參考資料:

https://github.com/a16z-infra/ai-town#customize-your-own-simulation

編輯:桃子 好困

來源公眾號(hào):新智元(ID:AI_era),“智能+”中國(guó)主平臺(tái),致力于推動(dòng)中國(guó)從“互聯(lián)網(wǎng)+”邁向“智能+”。

本文由人人都是產(chǎn)品經(jīng)理合作媒體 @新智元 授權(quán)發(fā)布,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 感覺很有意思,能夠讓人參與進(jìn)來,又能了解學(xué)習(xí)到新領(lǐng)域的知識(shí)

    來自廣東 回復(fù)