跳到内容

AutoGPT 入门:自托管指南

引言

本指南将帮助您设置项目的服务器和构建器。

我们还提供视频格式的指南。您可以在此处查看。

警告

请勿遵循任何外部教程,它们很可能已过时

先决条件

要设置服务器,您需要安装以下软件

检查是否已安装 Node.js 和 NPM

我们使用 Node.js 运行前端应用。

如果您需要安装 Node.js 的帮助:https://node.org.cn/en/download/

NPM 包含在 Node.js 中,但如果您需要安装 NPM 的帮助:https://docs.npmjs.net.cn/downloading-and-installing-node-js-and-npm

您可以通过运行以下命令检查是否已安装 Node.js 和 NPM

node -v
npm -v

安装 Node.js 后,您可以继续下一步。

检查是否已安装 Docker 和 Docker Compose

Docker 对应用进行容器化,而 Docker Compose 用于编排多容器 Docker 应用。

如果您需要安装 docker 的帮助:https://docs.docker.net.cn/desktop/

Docker Desktop 中包含了 Docker Compose,但如果您需要安装 docker compose 的帮助:https://docs.docker.net.cn/compose/install/

您可以通过运行以下命令检查是否已安装 Docker

docker -v
docker compose -v

安装 Docker 和 Docker Compose 后,您可以继续下一步。

树莓派 5 特定注意事项在运行 Raspberry Pi OS 的树莓派 5 上,默认的 16K 页面大小会导致 supabase-vector 容器出现问题 (预期:4K)。
要解决此问题,请编辑 /boot/firmware/config.txt 并添加
kernel=kernel8.img
然后重启。您可以使用以下命令检查您的页面大小
getconf PAGESIZE
16384 表示 16K (不正确),4096 表示 4K (正确)。调整后,docker compose up -d --build 应该可以正常工作。
请参阅 supabase/supabase #33816 以获取更多上下文。

设置

克隆仓库

第一步是将 AutoGPT 仓库克隆到您的计算机。为此,请在计算机上的一个文件夹中打开终端窗口并运行

git clone https://github.com/Significant-Gravitas/AutoGPT.git
如果您遇到困难,请按照本指南进行操作。

完成后,您可以继续设置过程。

运行后端服务

要运行后端服务,请按照以下步骤操作

  • 导航到 AutoGPT 文件夹内的 autogpt_platform 目录

     cd AutoGPT/autogpt_platform
    

  • .env.example 文件复制到 autogpt_platform 目录中的 .env

     cp .env.example .env
    
    此命令将 .env.example 文件复制到 supabase 目录中的 .env。您可以修改 .env 文件以添加您自己的环境变量。

  • 运行后端服务

     docker compose up -d --build
    
    此命令将以分离模式启动 docker-compose.combined.yml 文件中定义的所有必需的后端服务。

运行前端应用

要运行前端应用,请打开一个新终端并按照以下步骤操作

  • 导航到 autogpt_platform 目录内的 frontend 文件夹

     cd frontend
    

  • frontend 目录中提供的 .env.example 文件复制到同一目录中的 .env

     cp .env.example .env
    
    您可以修改此文件夹中的 .env 文件,为前端应用添加您自己的环境变量。

  • 运行以下命令

     npm install
     npm run dev
    
    此命令将安装必要的依赖项并以开发模式启动前端应用。

检查应用是否正在运行

您可以通过在浏览器中访问 http://localhost:3000 来检查服务器是否正在运行。

注意

默认情况下,不同服务的应用运行在以下端口

前端 UI 服务器:3000 后端 Websocket 服务器:8001 执行 API Rest 服务器:8006

附加说明

您可能希望更改 autogpt_platform/backend 目录中 .env 文件中的加密密钥。

要生成新的加密密钥,请在 python 中运行以下命令

from cryptography.fernet import Fernet;Fernet.generate_key().decode()

或者在 autogpt_platform/backend 目录中运行以下命令

poetry run cli gen-encrypt-key

然后,将 autogpt_platform/backend/.env 文件中的现有密钥替换为新密钥。

注意

以下步骤是运行后端服务的替代方案

替代步骤#### AutoGPT Agent Server (旧) 这是创建下一代 agent 执行的初始项目,即 AutoGPT agent server。该 agent server 将能够创建复合多 agent 系统,这些系统将 AutoGPT agents 和其他非 agent 组件用作其基本单元。 ##### 文档 您可以在[此处](https://docs.autogpt.org.cn/#1-autogpt-server)访问 AutoGPT Agent Server 的文档。 ##### 设置 我们使用 Poetry 来管理依赖项。要设置项目,请在此目录内按照以下步骤操作: 0. 安装 Poetry
pip install poetry
1. 配置 Poetry 在您的项目目录中使用 .venv
  poetry config virtualenvs.in-project true
2. 进入 poetry shell
poetry shell
3. 安装依赖项
poetry install
4. 将 .env.example 复制到 .env
cp .env.example .env
5. 生成 Prisma 客户端
poetry run prisma generate
> 如果 Prisma 为全局 Python 安装而不是虚拟环境生成客户端,当前的缓解措施是仅卸载全局 Prisma 包:> >
pip uninstall prisma
> > 然后再次运行生成。路径*应该*看起来像这样:> `/pypoetry/virtualenvs/backend-TQIRSwR6-py3.12/bin/prisma` 6. 迁移数据库。请小心,因为这会删除数据库中的当前数据。
docker compose up db -d
poetry run prisma migrate deploy

不使用 Docker 启动 AutoGPT 服务器

要在本地运行服务器,请从 autogpt_platform 文件夹开始

cd ..

运行以下命令以在 docker 中运行数据库,但在本地运行应用

docker compose --profile local up deps --build --detach
cd backend
poetry run app

使用 Docker 启动 AutoGPT 服务器

运行以下命令构建 dockerfile

docker compose build

运行以下命令运行应用

docker compose up

在另一个终端中运行以下命令,以便在代码更改时自动重建

docker compose watch

运行以下命令关闭

docker compose down

如果您遇到悬空孤儿(dangling orphans)问题,请尝试

docker compose down --volumes --remove-orphans && docker-compose up --force-recreate --renew-anon-volumes --remove-orphans  

📌 Windows 安装注意事项

在 Windows 上安装 Docker 时,强烈建议选择 WSL 2 而非 Hyper-V。使用 Hyper-V 可能会导致与 Supabase 的兼容性问题,导致 supabase-db 容器被标记为不健康

为 Docker 启用 WSL 2 的步骤:

  1. 安装 WSL 2
  2. 确保您的 Docker 设置使用 WSL 2 作为默认后端
  3. 打开 Docker Desktop
  4. 导航至设置 > 通用
  5. 勾选使用基于 WSL 2 的引擎
  6. 重启 Docker Desktop

已使用 Hyper-V 安装了 Docker?

如果您最初使用 Hyper-V 安装了 Docker,则无需重新安装。您可以按照以下步骤切换到 WSL 2: 1. 打开 Docker Desktop。 2. 转到设置 > 通用。 3. 启用使用基于 WSL 2 的引擎。 4. 重启 Docker。

🚨 警告:启用 WSL 2 可能会擦除您现有的容器和构建历史。如果您有重要的容器,请在切换之前考虑备份它们。

有关更多详细信息,请参阅 Docker 官方文档

开发

格式化和 Linting

项目中已设置自动格式化程序和 linter。要运行它们

安装

poetry install --with dev

格式化代码

poetry run format

运行 Lint 检查

poetry run lint

测试

要运行测试

poetry run test

项目概述

当前项目包含以下主要模块

blocks

此模块存储所有 Agent Blocks,它们是用于构建表示 agent 行为的图的可重用组件。

data

此模块存储持久化在数据库中的逻辑模型。它将数据库操作抽象为服务层可以调用的函数。任何与 Prisma 对象或数据库交互的代码都应位于此模块中。主要模型包括: * block:与图中使用的块相关的任何内容 * execution:与执行图的执行相关的任何内容 * graph:与图、节点及其关系相关的任何内容

execution

此模块存储执行图的业务逻辑。它目前包含以下主要模块: * manager:一个服务,负责消费图执行队列并执行图。它包含两部分逻辑。 * scheduler:一个服务,基于 cron 表达式触发计划的图执行。它将执行请求推送到 manager。

server

此模块存储服务器 API 的逻辑。它包含用于允许客户端创建、执行和监控图及其执行的 API 的所有逻辑。此 API 服务与 managerscheduler 等其他服务进行交互。

utils

此模块存储整个项目中使用的实用函数。它目前包含两个主要模块: * process:一个包含生成新进程逻辑的模块。 * service:一个模块,作为项目中所有服务的父类。

服务通信

目前,只有 3 个活动服务

  • AgentServer (API,定义在 server.py 中)
  • ExecutionManager (执行器,定义在 manager.py 中)
  • Scheduler (调度器,定义在 scheduler.py 中)

这些服务在独立的 Python 进程中运行,并通过 IPC 进行通信。创建了一个通信层 (service.py) 以将通信库与实现解耦。

目前,IPC 使用 Pyro5 实现,并以一种允许使用 @expose 装饰的函数从不同进程调用的方式进行抽象。

添加新的 Agent Block

要添加新的 agent block,您需要创建一个继承自 Block 并提供以下信息的新类: * 所有 block 代码都应位于 blocks (backend.blocks) 模块中。 * input_schema:输入数据的 schema,由 Pydantic 对象表示。 * output_schema:输出数据的 schema,由 Pydantic 对象表示。 * run 方法:block 的主要逻辑。 * test_inputtest_output:block 的示例输入和输出数据,将用于自动测试 block。 * 您可以使用 test_mock 字段来 mock block 中声明的函数,用于单元测试。 * 完成创建 block 后,您可以通过运行 poetry run pytest -s test/block/test_block.py 来测试它。