note
- Generative Agents是2023年斯坦福提出的agent小镇,通过memory->reflection->planning的框架提高NPC的行为目标性,给游戏NPC的灵活设计带来了可能。
- Generative Agents是一种多智能体交互的框架,它模拟现实中的人类行为。这些Agent可以起床,做早餐,上班;艺术家可以画画,作者可以写作;他们可以形成观点,注意到彼此,并发起对话;他们记住并反思过去的日子,同时规划下一天。这里可以看到其中每个Agent具有共同设定和特色设定,拥有记忆存储功能,和决策规划能力。
文章目录
- note
- 一、Generative Agents
- A. 简介:
- B. Tech Stack:
- C. 本地运行:
- 二、AI Town
- A. 简介:
- B. 相关论文总结:
- C. Tech Stack:
- D. AI-town Docker部署:
- Reference
一、Generative Agents
Generative Agents: Interactive Simulacra of Human Behavior (新版)
链接:https://github.com/drudilorenzo/generative_agents?tab=readme-ov-file#setting-up-the-environment
A. 简介:
- 由斯坦福大学与DeepMind团队联合发布的开源项目。
- 该代码库是研究论文"Generative Agents: Interactive Simulacra of Human Behavior."的配套资源。旨在创建生成agents,这些agents能够在虚拟环境中表现出逼真的人类行为。
- 结果显示,agents在控制条件下能够产生可信的个体行为。然而,在更复杂的社交情境中,仍存在一些局限。例如,agents有时会过度关注细节,导致行为不稳定。
Generative Agents项目的设计思路主要包括以下几个方面:
- 为每个AI编写人设:例如,John Lin是Willow市场和药房的药店店员,他喜欢帮助别人。他总是想方设法使顾客买药的过程更容易。
- 创建可互动的小镇:智能体将会在这个被称为SmallVille的小镇里生活。研究人员为小镇配置了很多可以互动的组件,有居民区,Cafe,酒吧,大学,商店,公园。
- 为每个AI创建记忆流管理系统:智能体使用自然语言储存与它相关的完整记录,将这些记忆随着时间的推移合成为更高层次的思考,并动态地检索它们来规划行为。
B. Tech Stack:
- Programming Languages: Python
- Libraries/Frameworks:
- NumPy (numerical operations)
- Matplotlib (visualization)
- Pygame (game development)
- 3D Engine: Unity (for graphics and interactions)
C. 本地运行:
- 克隆GitHub存储库
git clone https://github.com/drudilorenzo/generative_agents.git
- 创建Conda环境 & 下载安装包
conda create -n simulacra python=3.9.12 pip
conda activate simulacra
pip install -r requirements.txt
在run_frontend.sh
和run_backend.sh
更改conda env path(改为你自己的)
#!/bin/bash
BACKEND_SCRIPT_PATH="reverie/backend_server"
BACKEND_SCRIPT_FILE="reverie.py"
CONDA_ENV="simulacra" // <-------- 若需要,修改这行为你的conda环境的名字
LOGS_PATH="../logs"echo "Running backend server at: http://127.0.0.1:8000/simulator_home"
cd ${BACKEND_SCRIPT_PATH}
source /Users/$USER/miniconda3/bin/activate ${CONDA_ENV} // <-------- 修改这行Timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
echo "Timestamp: ${Timestamp}"
mkdir -p ${LOGS_PATH}
python ${BACKEND_SCRIPT_FILE} --origin ${1} --target ${2} | tee ${LOGS_PATH}/${Timestamp}.log
- Config 创建
在根目录下创建一个名为openai_config.json
的文件。把"your-key"
换成开放平台的api key。
{"client": "openai","model": "glm-4","model-key": "your-key","model-costs": {"input": 0.5,"output": 1.5},"embeddings-client": "openai","embeddings": "embedding-3","embeddings-key": "your-key","embeddings-costs": {"input": 0.02,"output": 0.0},"experiment-name": "simulacra-test","cost-upperbound": 10
}
- 启动环境服务器
可更改PORT-NUMBER
,可不填。默认port 8000
./run_frontend.sh <PORT-NUMBER>
- 启动模拟服务器
在另外一个terminal
有两个场景可填,第一个是3个agent,第二个是25个agent:
- base_the_ville_isabella_maria_klaus
- base_the_ville_n25
./run_backend.sh <场景> <名字>
例如:
./run_backend.sh base_the_ville_isabella_maria_klaus test0
跑起来后,会让你enter option,请注意,您需要将上述的<step-count>
替换为一个整数,以表示您想要模拟的游戏步骤数量。例如,如果您想模拟100个游戏步骤,您应该输入run 100
。一个游戏步骤在游戏中代表10秒。
注意:刚开始agent都在睡觉,只有run 2000步以上,agent才会移动(等待时间略长)。
run <step-count>
当enter option再次出现:
- 输入
fin
保存并离开游戏 - 输入
exit
离开游戏 - 输入
run <step-count>
继续游戏
二、AI Town
https://github.com/a16z-infra/ai-town
demo:https://www.convex.dev/ai-town
A. 简介:
AITown是一个虚拟小镇模拟项目,AI智能体可以彼此互动,也可以与用户进行对话、工作和活动等任务。受该研究论文启发Generative Agents: Interactive Simulacra of Human Behavior。
B. 相关论文总结:
这篇论文描述了一种生成型智能体的架构,该架构提供了一种机制,能够存储智能体的全面经历记录,通过反思加深其对自身和环境的理解,并从中检索出信息以指导智能体的行为。
C. Tech Stack:
Game engine, database, and vector search: Convex
Default chat model is llama3(我们换成了glm-4和智谱清言智能体)and embeddings with mxbai-embed-large(我们换成了embedding-3)。
Pixel Art Generation: Replicate, Fal.ai
Background Music Generation: Replicate using MusicGen
D. AI-town Docker部署:
- 克隆GitHub存储库
git clone https://github.com/a16z-infra/ai-town.git
- 在启动Docker之前
修改你的package.json
文件,给前端服务器(Vite)添加--host
选项:
{"name": "ai-town","version": "0.0.0","private": true,"scripts": {"dev": "npm-run-all --parallel dev:frontend dev:backend","build": "tsc && vite build","lint": "eslint .","predev": "just convex dev --run init --until-success","dev:backend": "just convex dev --tail-logs","dev:frontend": "vite --host", // <--------- 修改这行"test": "NODE_OPTIONS=--experimental-vm-modules jest --verbose","le": "vite src/editor/"}
}
- 启动Docker Compose
运行以下命令来启动Docker Compose:
docker-compose up --build
- 启动交互式Docker终端
在另一个终端中,仍在aitown
目录中,启动交互式Docker终端:
docker-compose exec ai-town /bin/bash
- 本地运行
- 下载并解压本地Convex后端:
curl -L -O https://github.com/get-convex/convex-backend/releases/download/precompile/convex-local-backend-x86_64-unknown-linux-gnu.zip unzip convex-local-backend-x86_64-unknown-linux-gnu.zip
- 确认
convex-local-backend
文件在目录中,然后删除压缩包:rm convex-local-backend-x86_64-unknown-linux-gnu.zip
- 将文件设为可执行:
chmod +x /usr/src/app/convex-local-backend
- 启动Convex后端服务器:
./convex-local-backend
- 启动
aitown
服务器的交互式Docker终端
- 在另一个终端中,进入
aitown
目录,重新启动:docker-compose exec ai-town /bin/bash
- 配置
socat
:使用你主机的IP地址(不是Docker的IP):HOST_IP=YOUR-HOST-IP socat TCP-LISTEN:11434,fork TCP:$HOST_IP:11434 &
- 启动 AI Town:
npm run dev
- 重新启动
- 启动容器后,只需在 AI-town 文件夹中打开两个终端,运行以下命令:
docker-compose exec ai-town /bin/bash
- 启动 Convex 后端服务器:
bash ./convex-local-backend
- 然后在第二个终端中配置
socat
并启动 AI Town:HOST_IP=YOUR-HOST-IP socat TCP-LISTEN:11434,fork TCP:$HOST_IP:11434 & npm run dev
Reference
[1] https://github.com/a16z-infra/ai-town
[2] 文献阅读与分析"Generative Agents: Interactive Simulacra of Human Behavior"
[3] 我让六个AI合租,居然出了个海王.林亦LYi_bzhan
[4] 斯坦福大学AI小镇论文《Generative Agents :interactive simulacra of human behavior》(全文翻译)
[5] LLM Agent智能体综述(万字长文)