基于 Ollama 与 Llama3 本地部署斯坦福多智能体 AI 小镇指南
介绍如何使用 Ollama 本地运行 Llama3 模型,结合 a16z 开源的 AI Town 项目,在本地环境搭建斯坦福多智能体模拟小镇。涵盖环境准备、Convex 后端部署、模型配置及运行调试步骤,实现无需云端 API 即可体验多智能体交互。详细说明了 Node 版本要求、Ollama 模型拉取、环境变量设置及常见故障排查方法。

介绍如何使用 Ollama 本地运行 Llama3 模型,结合 a16z 开源的 AI Town 项目,在本地环境搭建斯坦福多智能体模拟小镇。涵盖环境准备、Convex 后端部署、模型配置及运行调试步骤,实现无需云端 API 即可体验多智能体交互。详细说明了 Node 版本要求、Ollama 模型拉取、环境变量设置及常见故障排查方法。

自从斯坦福大学发布了《Generative Agents: Interactive Simulacra of Human Behavior》论文后,多智能体(Multi-Agent)领域迅速引起了广泛关注。该研究展示了如何通过大语言模型模拟人类行为,使虚拟角色具备记忆、反思和规划能力。
a16z 开源的 AI Town 项目在保留原始斯坦福 AI 小镇核心功能的基础上,优化了部署流程,使其更易上手。本文将详细介绍如何使用本地部署的 Ollama 运行 Llama3 模型,配合 AI Town 项目搭建一个完全私有的多智能体交互环境,全程无需云端 API 调用,免费且数据可控。
本项目支持 Linux 和 macOS 系统,Windows 用户可通过 WSL (Windows Subsystem for Linux) 进行部署。
本文以 macOS 为例,其他系统需根据具体指令调整。确保满足以下基础环境要求:
AI Town 对 Node 版本有严格要求。如果当前版本不是 18,请在执行项目命令前切换版本:
nvm install 18
nvm use 18
验证版本:
node -v
# 应输出 v18.x.x
项目中使用了 just 命令来简化操作,建议提前安装。
Linux (Ubuntu 24.04):
sudo apt install just
macOS:
brew install just
克隆官方仓库到本地目录:
git clone https://github.com/a16z-infra/ai-town.git
cd ai-town
安装前端及后端依赖:
npm install
此时项目结构已就绪,主要包含前端应用和 Convex 后端逻辑。

Convex 是该项目使用的无服务器数据库框架。为了离线运行,我们需要启动本地版本的 Convex 后端。
前往 GitHub Releases 页面下载对应系统的预编译版本: https://github.com/get-convex/convex-backend/releases
解压下载的压缩包后,将可执行文件放入项目根目录或环境变量路径中。
macOS (Apple Silicon):
# 下载并解压 (示例命令)
curl -L -O https://github.com/get-convex/convex-backend/releases/latest/download/convex-local-backend-aarch64-apple-darwin.zip
unzip convex-local-backend-aarch64-apple-darwin.zip
# 赋予执行权限
chmod +x convex-local-backend
# 启动服务
./convex-local-backend
Linux:
# 假设已下载并解压
./convex-local-backend
启动成功后,终端会显示后端监听端口信息,通常默认为 3000 或 5173 相关端口。
AI Town 依赖大语言模型生成对话内容,以及向量模型处理记忆检索。我们使用 Ollama 提供本地推理能力。
在终端执行以下命令拉取所需模型:
ollama pull llama3
ollama pull mxbai-embed-large
llama3: 用于文本生成和对话。mxbai-embed-large: 用于向量化存储和检索智能体的记忆。检查项目配置文件 convex/util/llm.ts,确认默认模型名称与 Ollama 中的名称一致。当前版本默认已配置为 llama3,无需修改。
如需手动指定模型,可使用 just 命令设置环境变量:
just convex env set LLM_MODEL llama3
如果发现对话响应较慢,可以调整搜索记忆的数量以减少 Prompt 长度。编辑 convex/constants.ts 文件,将 NUM_MEMORIES_TO_SEARCH 的值改为 1:
export const NUM_MEMORIES_TO_SEARCH = 1;
这将显著加快对话速度,但可能略微降低上下文感知的丰富度。
如果需要为 AI 小镇添加背景音乐,需要注册 Replicate 账户并获取 API Token。
just convex env set REPLICATE_API_TOKEN <此处替换为实际 Token>
此步骤非必需,不影响核心功能运行。
完成上述配置后,即可启动前后端服务。
在项目根目录下执行:
npm run dev
等待构建完成后,浏览器访问: http://localhost:5173/ai-town
若需独立调试,可分开运行:
# 前端
npm run dev:frontend
# 后端
npm run dev:backend
刚启动时,小镇内的人物可能处于静止状态,暂无对话。这是正常现象,请观察终端日志:

如果启动报错提示端口被占用,请检查是否已有其他服务占用 5173 或 3000 端口,或使用 lsof -i :5173 查看进程并终止。
首次运行 Ollama 模型时,可能需要下载权重文件。请确保网络连接稳定。若网络受限,可提前下载模型文件至本地。
运行多个智能体实例可能消耗较多内存。如果系统内存紧张,可减少同时运行的智能体数量,或增加系统 Swap 分区。
确保 convex-local-backend 正在运行,且前端配置中的 Convex URL 指向正确的本地地址(通常为 http://localhost:3000)。
通过本教程,我们成功利用 Ollama 和 Llama3 在本地构建了斯坦福多智能体 AI 小镇。这种方式不仅保护了数据隐私,还避免了高昂的 API 调用费用。开发者可以根据需求进一步定制智能体的性格、记忆机制或交互逻辑,探索多智能体协作的更多可能性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online