【LLM】Generative Agents和代码实践

note

  • Generative Agents是2023年斯坦福提出的agent小镇,通过memory->reflection->planning的框架提高NPC的行为目标性,给游戏NPC的灵活设计带来了可能。
  • Generative Agents是一种多智能体交互的框架,它模拟现实中的人类行为。这些Agent可以起床,做早餐,上班;艺术家可以画画,作者可以写作;他们可以形成观点,注意到彼此,并发起对话;他们记住并反思过去的日子,同时规划下一天。这里可以看到其中每个Agent具有共同设定和特色设定,拥有记忆存储功能,和决策规划能力。

一、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. 本地运行:

  1. 克隆GitHub存储库
git clone https://github.com/drudilorenzo/generative_agents.git
  1. 创建Conda环境 & 下载安装包
conda create -n simulacra python=3.9.12 pip
conda activate simulacra
pip install -r requirements.txt

run_frontend.shrun_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
  1. 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
}
  1. 启动环境服务器
    可更改 PORT-NUMBER,可不填。默认port 8000
./run_frontend.sh <PORT-NUMBER>
  1. 启动模拟服务器

在另外一个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部署:

  1. 克隆GitHub存储库
git clone https://github.com/a16z-infra/ai-town.git
  1. 在启动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/"
  }
}
  1. 启动Docker Compose
    运行以下命令来启动Docker Compose:
docker-compose up --build
  1. 启动交互式Docker终端
    在另一个终端中,仍在 aitown 目录中,启动交互式Docker终端:
docker-compose exec ai-town /bin/bash
  1. 本地运行
  • 下载并解压本地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
    
  1. 启动 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
    
  1. 重新启动
  • 启动容器后,只需在 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智能体综述(万字长文)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山顶夕景

小哥哥给我买个零食可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值