

來源|新智元
準備好,此前曾轟動整個AI社群的斯坦福智慧體小鎮,現在已經正式開源!

在這個數字化的「西部世界」沙盒虛擬城鎮中,有學校、醫院、家庭。
25個AI智慧體不僅能在這裡上班、閒聊、social、交友,甚至還能談戀愛,而且每個Agent都有自己的個性和背景故事。
不過,它們對於自己生活在模擬中,可是毫不知情。

英偉達高階科學家Jim Fan評論道——
斯坦福智慧體小鎮是2023年最激動人心的AI Agent實驗之一。我們常常討論單個大語言模型的新興能力,但是現在有了多個AI智慧體,情況會更復雜、更引人入勝。一群AI,可以演繹出整個文明的演化程序。
現在,首先受到影響的,或許就是遊戲領域。
總之,前方有無限的新可能!

網友:眾遊戲廠商們,你們懂我意思吧?
很多人相信,斯坦福的這篇論文,標誌著AGI的開始。

可以想象,各種RPG和模擬類遊戲都會用上這種技術。
網友們也非常激動,腦洞大開。
有想看神奇寶貝的,有想看謀殺探案故事的,還有想看戀愛綜藝的……
「我已經等不及看AI智慧體之間的三角戀劇情了。」

「《動物之森》中重複、沉悶的對話,所有村民共有的一維人格系統,都太令人失望了。任天堂趕快學學吧!」


「可以讓《模擬人生》移植一下這個嗎?」


如果能在《神界》這樣的經典RPG遊戲中,看到AI在NPC上執行,整個遊戲體驗都會被顛覆!」


有人還暢想:這項技術在企業空間中也有很多應用場景,比如員工如何和不同的工作環境/流程變化互動。

當然,也有人表示,你們激動個啥?其實我們一直都生活在這樣的模擬中,只不過我們的世界有更多的算力罷了。

是的,如果我們把這個虛擬世界放大到足夠多倍,我們肯定能看到自己。

Karpathy:AI智慧體,就是下一個前沿
此前,前特斯拉總監、OpenAI大牛Karpathy就表示,如今AI智慧體才是未來最前沿的方向。
OpenAI的團隊最近5年把時間花在了別的地方,但現在Karpathy相信,「Agent代表著AI的一種未來。」

如果某篇論文提出訓練大語言模型的不同方法,OpenAI內部的Slack群組中就會有人說:「這個辦法我兩年半前嘗試過,沒什麼用。」
然而每當有AI智慧體從論文出現,所有同事都會很感興趣。

Karpathy曾將AutoGPT稱為快速工程的下一個前沿
「西部世界」中的25個AI智慧體
在美劇《西部世界》中,被預設了故事情節的機器人被投放到主題公園,像人類一樣行事,然後被重置記憶,在新一天再被投放進自己所在的核心故事情節。

而在今年4月,斯坦福和谷歌的研究者竟然構建出了一個虛擬小鎮,讓25個AI智慧體在其中生存、從事複雜行為,簡直堪稱是《西部世界》走進現實。

論文地址:https://arxiv.org/pdf/2304.03442.pdf
架構
為了生成智慧體,研究者提出了一種全新架構,它擴充套件了大語言模型,能夠使用自然語言儲存Agent的經歷。
隨著時間的推移,這些記憶會被合成為更高級別的反射,智慧體可以動態檢索它們,來規劃自己的行為。
最終,使用者可以使用自然語言和全鎮的25個Agent都實現互動。

如上,生成式智慧體的架構實現了一個「檢索」功能。
這一功能將智慧體的當前情況作為輸入,並返回記憶流的一個子集傳遞給語言模型。
而檢索功能有多種可能的實現方式,具體取決於智慧體在決定如何行動時考慮的重要因素。
生成式智慧體架構面臨一個核心挑戰,就是如何管理大量必須保留的事件和記憶。
為了解決這個問題,架構的核心是記憶流(memory stream),即一個記錄智慧體全部經驗的資料庫。
智慧體可以從記憶流中檢索相關記憶,這有助於它規劃行動,做出正確反應,並且每次行動都會反饋記錄到記憶流中,以便遞迴地改進未來行動。
另外,研究還引入了第二種型別的記憶——反思(reflection)。反思是智慧體根據最近經歷生成的高階抽象思考。

在這項研究中,反思是週期性觸發的過程,只有當智慧體判斷最近一系列事件的重要性評分,累積超過設定閾值時,才會啟動反思機制。
生成式智慧體為了建立合理的規劃,它們會自上而下遞迴生成更多的細節。
而這些規劃最初只是粗略的描述了當日所要做的事情。

在執行規劃的過程中,生成智慧體會持續感知周圍環境,並將感知到的觀察結果儲存到記憶流中。
透過利用觀察結果作為提示,讓語言模型決定智慧體下一步行動:繼續執行當前規劃,還是做出其他反應。
在實驗評估中,研究人員對這一框架進行了控制評估,以及端到端的評估。
控制評估是為了瞭解智慧體能否獨立產生可信個體行為。而端到端評估,是為了瞭解智慧體的湧現能力以及穩定性。
比如,Isabella策劃一個情人節party邀請大家來。12個智慧體中,7個人還在考慮中(3個人有了別的計劃,還有4個人沒有想法)。
這一環節與人類相處模式很相似。

像真人一樣互動

在這個名為Smallville的沙盒世界小鎮中,區域會被標記。根節點描述整個世界,子節點描述區域(房屋、咖啡館、商店),葉節點描述物件(桌子、書架)。
智慧體會記住一個子圖,這個子圖反映了他們所看到的世界的各個部分。
研究者編寫了一段自然語言,來描述每個智慧體的身份,包括它們的職業、與其他智慧體的關係,作為種子記憶。
比如,智慧體John Lin的種子記憶就是這樣的——
John Lin是一名藥店店主,十分樂於助人,一直在尋找使客戶更容易獲得藥物的方法。John Lin的妻子Mei Lin是大學教授,兒子Eddy Lin正在學習音樂理論,他們住在一起,John Lin非常愛他的家人。John Lin認識隔壁的老夫婦Sam Moore和Jennifer Moore幾年了,John Lin覺得Sam Moore是一個善良的人。John Lin和他的鄰居山本百合子很熟。John Lin知道他的鄰居TamaraTaylor和Carmen Ortiz,但從未見過他們。John Lin和Tom Moreno是藥店同事,也是朋友,喜歡一起討論地方政治等等。
以下就是John Lin度過的一天早晨:6點醒來,開始刷牙、洗澡、吃早餐,在出門工作前,他會見一見自己的妻子Mei和兒子Eddy。

就這樣,當模擬開始時,每個智慧體都有屬於自己的種子記憶。
這些智慧體相互之間會發生社會行為。當他們注意到彼此時,可能會進行對話。
隨著時間推移,這些智慧體會形成新的關係,並且會記住自己與其他智慧體的互動。
一個有趣的故事是,在模擬開始時,一個智慧體的初始化設定是自己需要組織一個情人節派對。
隨後發生的一系列事情,都可能存在失敗點,智慧體可能不會繼續堅持這個意圖,或者會忘記告訴他人,甚至可能忘了出現。
幸運的是,在模擬中,情人節派對真實地發生了,許多智慧體聚在了一起發生了有趣的互動。

配置環境
在配置環境之前,首先需要生成一個包含OpenAI API金鑰的utils.py檔案,並下載必要的軟體包。
步驟1. 生成 Utils 檔案
在reverie/backend_server資料夾中(reverie.py所在的資料夾),新建一個utils.py檔案,並將下面的內容複製貼上到檔案中:
# Copy and paste your OpenAI API Key
openai_api_key = "<Your OpenAI API>"
# Put your name
key_owner = "<Name>"
maze_assets_loc = "../../environment/frontend_server/static_dirs/assets"
env_matrix = f"{maze_assets_loc}/the_ville/matrix"
env_visuals = f"{maze_assets_loc}/the_ville/visuals"
fs_storage = "../../environment/frontend_server/storage"
fs_temp_storage = "../../environment/frontend_server/temp_storage"
collision_block_id = "32125"
# Verbose
debug = True
將 <Your OpenAI API> 替換為你的OpenAI API金鑰,將 <name> 替換為你的姓名。
步驟 2. 安裝requirements.txt
安裝requirements.txt檔案中列出的所有內容(強烈建議先設定一個虛擬環境)。
目前,團隊已在Python 3.9.12上進行了測試。
執行模擬
要執行新的模擬,你需要同時啟動兩個伺服器:環境伺服器和智慧體模擬伺服器。
步驟 1. 啟動環境伺服器
由於環境是作為Django專案實現的,因此需要啟動Django伺服器。
為此,首先在命令列中導航到environment/frontend_server(manage.py所在的位置)。然後執行以下命令:
python manage.py runserver
然後,在你喜歡的瀏覽器中訪問http://localhost:8000/。
如果看到「Your environment server is up and running」這個提示,意思就是伺服器執行正常。確保環境伺服器在執行模擬時持續執行,因此請保持這個命令列標籤開啟。
(注意:建議使用Chrome或Safari。Firefox可能會出現一些前端故障,但應該不會影響實際模擬。)
步驟 2. 啟動模擬伺服器
開啟另一個命令列視窗(你在步驟 1 中使用的仍在執行環境伺服器,需要保持不動)。導航到reverie/backend_server並執行reverie.py來啟動模擬伺服器:
python reverie.py
此時,會出現一個命令列提示詢問以下內容:「Enter the name of the forked simulation: 」。
舉個例子,現在我們要啟動一個包含Isabella Rodriguez、Maria Lopez和Klaus Mueller這3個智慧體的模擬,那麼就是輸入以下內容:
base_the_ville_isabella_maria_klaus
然後,提示將會詢問:「Enter the name of the new simulation: 」。
這時只需要隨意輸入一個名稱來表示當前的模擬即可(例如「test-simulation」)。
test-simulation
保持模擬器伺服器執行。此階段,它會顯示以下提示:「Enter option」
步驟 3. 執行和儲存模擬
在瀏覽器中訪問http://localhost:8000/simulator_home,並保持標籤開啟。
現在你會看到小鎮的地圖,以及地圖上活躍的智慧體列表,並且可以使用鍵盤箭頭在地圖上移動。
要執行模擬,需要在提示「Enter option」的模擬伺服器中輸入以下命令:
run <step-count>
請注意,需要將上述的 <step-count> 替換為一個整數,表示要模擬的遊戲步數。
例如,如果要模擬100步遊戲,就輸入run 100。其中,一個遊戲步驟表示遊戲中的10秒。
現在,模擬就會開始執行,你可以在瀏覽器中看到智慧體在地圖上移動。
一旦執行完成,「Enter option」提示會再次出現。此時,你可以透過重新輸入run命令並指定所需的遊戲步數來繼續模擬,或者輸入exit退出但不儲存,輸入fin則是儲存並退出。
下次執行模擬伺服器時,只要提供模擬的名稱就可以訪問已儲存的模擬。這樣,你就可以從上次離開的位置重新啟動模擬。
Step 4. 重放模擬
只需執行環境伺服器,並在瀏覽器中訪問到以下地址,即可重放已執行的模擬:http://localhost:8000/replay/<simulation-name>/<starting-time-step>。
其中,需要將<simulation-name>替換為重放的模擬的名稱,將<starting-time-step>替換開始重放的整數時間步。
Step 5. 演示模擬
你可能會發現,重放中所有角色的Sprite看起來都是一樣的。這是因為重放功能主要用於除錯,並不優先考慮最佳化模擬資料夾的大小或視覺效果。
要正確演示帶有角色Sprite的模擬,首先需要壓縮模擬。為此,請使用文字編輯器開啟位於reverie目錄中的compress_sim_storage.py檔案。然後,執行壓縮函式,並將目標模擬的名稱作為輸入。這樣,模擬檔案就會被壓縮,從而可以進行演示。
啟動演示,請在瀏覽器中開啟以下地址:http://localhost:8000/demo/<simulation-name>/<starting-time-step>/<simulation-speed>。
注意,<simulation-name>和<starting-time-step>與上述提到的含義相同。<simulation-speed>可用於控制演示速度,其中1表示最慢,5表示最快。
定製模擬
你有兩種可選方式來自定義模擬。
方法1:編寫並載入智慧體歷史
第一種是在模擬開始時初始化具有獨特歷史記錄的智慧體。
為此,你需要執行以下操作:1)使用其中一個基本模擬開始,2)編寫和載入智慧體歷史記錄。
步驟1. 啟動基本模擬
儲存庫中包含兩個基本模擬:base_the_ville_n25(25個智慧體)和base_the_ville_isabella_maria_klaus(3個智慧體)。可以按照上述步驟載入其中一個基本模擬。
步驟2. 載入歷史檔案
然後,在提示輸入「Enter option」時,需要使用以下命令載入智慧體歷史記錄:
call -- load history the_ville/<history_file_name>.csv
其中,需要將<history_file_name>替換為現有歷史檔案的名稱。
儲存庫中包含兩個示例歷史檔案:agent_history_init_n25.csv(針對base_the_ville_n25)和agent_history_init_n3.csv(針對base_the_ville_isabella_maria_klaus)。這些檔案包含了每個智慧體的記憶體記錄列表。
步驟3. 進一步的定製
要透過編寫自己的歷史檔案來定製初始化,請將檔案放在以下資料夾中:environment/frontend_server/static_dirs/assets/the_ville。
自定義的歷史檔案的列格式必須與附帶的示例歷史檔案一致。因此,作者建議透過複製和貼上儲存庫中已有的檔案來開始該過程。
方法2:建立新的基本模擬
如果想要更深度地定製,就需要編寫自己的基本模擬檔案。
最直接的方法是複製和貼上現有的基本模擬資料夾,然後根據自己的要求進行重新命名和編輯。
參考資料:
https://github.com/joonspk-research/generative_agents
https://twitter.com/DrJimFan/status/1689315683958652928

一場聚集人工智慧產業頭部公司與頂級資本的對話
點選下方圖片即可報名參加活動

品玩招聘作者,資深作者及編輯,並長期開放實習生招聘。
世界不平靜,我們希望在變動的技術週期和商業週期裡繼續我們的探索,不熄滅眼裡的光。
為了和更多個優秀的你一起記錄和改變這個激動人心的時代,做更多有價值的報道,品玩現開放招聘。
崗位資訊:全職:4人。實習生長期招聘。工作地點:北京。
一句話總結我們在招聘的崗位的工作內容,就是:
報道最重要的商業和技術新聞,並抽絲剝繭地解釋給讀者它們為什麼重要。
一些共同的崗位要求:
1. 尊重常識。
2.對好內容有感知,有選題發明能力。
3.掌握快速搜尋梳理資訊的方法,有較強的文獻閱讀能力,能獨立拓展相關資源。
4 英文流利。有閱讀英文內容的習慣,可以用英文完成溝通。
5.對真實世界有感知,心智成熟,有職業精神,溝通介面良好穩定。
在招崗位:
-新經濟作者、新技術作者
新經濟作者負責報道網際網路商業領域最新動態;新技術作者負責報道新技術領域(AI,晶片,機器人等)最新動態;
追蹤錢的流動,人的變化,商業世界的競爭與合作以及科技的變革,並把它們講述給我們的讀者;
不限工作經驗,不限專業背景,我們歡迎不同背景的候選人。
-資深作者/編輯
對網際網路商業領域或新技術領域有自己的研究和積累;
有自己獲取資訊的方法體系,有持續學習的能力;
能發明選題,撰寫深度文章,同時也可以輔導初級作者。
長期招募實習生
我們為實習生提供與全職同樣的指導與工作支援,並提供留用機會。
或者,以上的描述都不能定義你,但你認為你是我們需要的那個人,也可以發郵件給我們,介紹你自己。
以上崗位應聘者,請將簡歷及作品傳送至:[email protected] 。(請標明應聘崗位)
同時,我們也在招聘其他崗位:
運營部門
崗位資訊:全職:3人。實習生長期招聘。工作地點:北京。
內容運營
能夠敏銳的捕捉網際網路熱點,並將其轉化為出色的內容;
富有創新意識和強烈的主觀能動性,重視流量在工作中的重要性;
有自己獨特的資料分析方法論,能發現龐雜資料中的關鍵點,並反哺內容創作。
影片運營
具備影片的全流程的創作能力;
對各個內容平臺均有深刻理解,能抓住平臺規則紅利;
有自己獨特的資料分析方法論,能發現龐雜資料中的關鍵點,並反哺內容創作。
社群運營
有過國內外成熟知名社群的運營經驗;
能夠獨立承擔運營策略、節奏設計,結合運營目標、節點資源等因素制定精細化的社群運營規劃;
對UGC的熱點、流行趨勢、話語體系有充分理解,能夠透過創意、熱點玩法、活動策劃激發UGC參與。
長期招募實習生
我們為實習生提供與全職同樣的指導與工作支援,並提供留用機會。
運營崗位應聘者,請將簡歷及作品傳送至:[email protected] 。(請標明應聘崗位)
商務部門
銷售總監/高階銷售經理
崗位職責:
1. 負責品玩線上廣告、線下活動類、品牌營銷、市場公關、以及定製方案的商務拓展與銷售工作,透過對目標行業客戶的銷售完成指定收入目標;
2. 對目標行業客戶進行研究、識別、接洽、需求、分析、產品演示、方案規劃、談判與簽約;
3. 管理與維護指定客戶(包括新客戶與現有客戶),提供優秀的售前與售後服務,建立長期、穩定的合作關係,對客戶產品和需求進行持續性的研究與開發;
4. 與各部門保持緊密合作,回饋客戶需求與最新行業動向,協助最佳化產品與服務;
5. 積極參加行業商務與社交活動,拓展人脈資源,持續瞭解與提升行業知識和洞察力
任職要求:
1. 網際網路銷售經驗2年以上,銷售經驗5年以上優先;
2. 做事嚴謹、細心,較強的溝通協調能力;
3. 有市場營銷、品牌方或者市場公關乙方工作經歷優先;
4. 自我驅動,有很強的學習行業知識及專業知識的能力;
5. 具備應變能力,團隊協作能力,能適應多工處理及工作壓力;
6. 擁有intel、華為、華為雲、阿里、阿里雲、高通等網際網路行業直客資源者優先。
更多招聘資訊,可以進入官網招聘頁面獲取。
期待品玩有你的加入。


