簡體中文| English
史丹佛AI小鎮由史丹佛大學和谷歌於2023年8月開源,由25個智能體組成的虛擬世界,模擬了真實的人類生活。
25個智能體完全由ChatGPT驅動,自主組織派對、參加會議、在情人節籌辦各種活動。他們能夠展現出與人類相似的生活模式和行為習慣。
Generative Agents的原始程式碼工程化程度較低,難以持續維護或拓展功能,且時隔一年多,中文LLM的能力也已勝任此類任務。因此,我們對原項目進行了重構+深度漢化,旨在為中文用戶提供一個利於維護的基礎版本,以便後續實驗或嘗試更多玩法。
wounderland專案是原始Generative Agents專案的重構版本,結構良好且程式碼品質遠優於原版,因此本專案基於wounderland開發。
主要工作:
回放畫面:
註:地圖及人物名稱也同步漢化,是為了避免LLM在遇到中英混雜的上下文時,切換到英文語境。
git clone https://github.com/x-glacier/GenerativeAgentsCN.git
cd GenerativeAgentsCN
修改設定檔generative_agents/data/config.json
:
base_url
和model
與Ollama中的配置一致。api_keys
中填入對應的key,並根據API文件修改base_url
和model
。建議先使用anaconda3建立並啟動虛擬環境:
conda create -n generative_agents_cn python=3.11
conda activate generative_agents_cn
安裝依賴:
pip install -r requirements.txt
cd generative_agents
python start.py --name sim-test --start "20240213-09:30" --step 10 --stride 10
參數說明:
name
- 每次啟動虛擬小鎮,需要設定唯一的名稱,以便事後重播。start
- 虛擬小鎮的起始時間。resume
- 在運行結束或意外中斷後,從上次的「斷點」處,繼續運行虛擬小鎮。step
- 在迭代多少步驟之後停止運行。stride
- 每一步迭代在虛擬小鎮中對應的時間(分鐘)。假如設定--stride 10
,虛擬小鎮在迭代過程中的時間變化將會是9:00,9:10,9:20 ... python compress.py --name <simulation-name>
運行結束後將在results/compressed/<simulation-name>
目錄下產生回放資料檔movement.json
。同時也將產生simulation.md
,以時間軸方式呈現每個智能體的狀態及對話內容。
python replay.py
透過瀏覽器開啟回放頁面(網址: http://127.0.0.1:5000/?name=<simulation-name>
),可以看到虛擬小鎮中的居民在各個時段的活動。
可透過方向鍵移動畫面
參數說明
name
- 啟動虛擬小鎮時設定的名稱。step
- 回放的起始步數,0代表從第一幀開始回放,預設值為0。speed
- 回放速度(0-5),0最慢,5最快,預設值為2。zoom
- 畫面縮放比例,預設值為0.8。發布版本中內建了名為example
的回放資料(由qwen2.5:32b-instruct-q4_K_M產生)。若希望以較快速度從頭開始回放,畫面縮放比例為0.6,則對應的url為:http://127.0.0.1:5000/?name=example&step=0&speed=2&zoom=0.6
也可直接開啟simulation.md,查看example
中所有人物活動和對話訊息。
畫面中對話內容由qwen2.5:14b-instruct-q4_K_M生成
小鎮全景
公園
咖啡廳
教室
Generative Agents: Interactive Simulacra of Human Behavior
Generative Agents
wounderland