菜单

配置

相关源文件

本文件提供了有关 AutoGPT 平台配置的详细信息。它涵盖了环境变量、配置文件和控制系统行为的设置。有关安装平台的信息,请参阅 安装,有关运行您的第一个代理,请参阅 快速入门指南

配置架构

AutoGPT 使用分层配置系统,结合了环境变量、配置文件和默认设置。该系统设计灵活,允许您在不同级别覆盖默认配置。

配置系统主要基于 Settings 类,该类封装了 Config(应用程序设置)和 Secrets(敏感凭据)。配置值根据特定的优先级顺序从环境变量、.env 文件和默认值加载。

来源

核心配置文件

.env 文件

您将在 .env 文件中设置大多数选项。提供了一个 .env.example 模板供您复制和自定义。

在应用程序启动时会自动加载 .env 文件,并为常规配置设置和秘密提供值。

来源

config.json

对于持久的配置更改,会使用 config.json 文件。此文件会自动在数据目录中创建,并存储通过 API 对配置所做的任何更改。

当配置值更新时,只有更改的字段会被写入 config.json 文件。这允许选择性地覆盖默认值。

来源

配置类

配置系统围绕几个关键类构建

Settings 类

Settings 类是访问配置的主要入口点。它包含:

  • config:应用程序配置设置(非敏感)
  • secrets:敏感设置,如 API 密钥和凭据

来源

Config 类

Config 类定义了所有非敏感的应用程序设置。

  • 服务端口号
  • 工作进程配置
  • 功能标志
  • 服务 URL
  • CORS 设置

示例配置选项

类别设置描述默认
工作进程num_graph_workers图执行的最大工作进程数10
工作进程num_node_workers节点执行的最大工作进程数5
服务websocket_server_portWebSocket 服务器端口8001
服务execution_manager_port执行管理器端口8002
特性enable_auth启用认证True
特性enable_credit启用用户积分系统

来源

Secrets 类

Secrets 类定义了敏感配置,如 API 密钥和凭据。

  • 数据库凭据
  • OAuth 客户端凭据
  • LLM API 密钥
  • 电子邮件服务 API 密钥
  • 集成 API 密钥

来源

环境配置

AutoGPT 支持不同的环境配置

应用程序环境

app_env 设置决定了应用程序环境。

  • local:本地开发环境
  • dev:开发/暂存环境
  • prod:生产环境

来源

行为模式

behave_as 设置决定了应用程序应如何表现。

  • local:表现为本地实例(使用本地 API 密钥和配置)
  • cloud:表现为云实例(使用云特定行为)

来源

Docker 环境配置

在 Docker 中运行时,环境变量通过 docker-compose 文件直接传递到容器。主要环境变量包括:

  • 数据库连接详细信息
  • Redis 和 RabbitMQ 凭据
  • 服务主机/端口映射
  • API 密钥和秘密

docker-compose 示例

来源

服务配置

AutoGPT 平台中的每个服务都可以通过专用设置进行配置。

网络配置

服务通信通过主机/端口设置进行配置。

关键网络配置选项

服务主机设置端口设置默认端口
REST APIpyro_hostagent_api_port8006
WebSocketwebsocket_server_hostwebsocket_server_port8001
执行管理器pyro_hostexecution_manager_port8002
调度器pyro_hostexecution_scheduler_port8003
通知服务pyro_hostnotification_service_port8007

来源

服务间通信

服务使用 AppService 框架相互通信,该框架通过 FastAPI 提供基于 HTTP 的 RPC。

服务客户端会使用适当的配置自动创建。

来源

通知系统配置

通知系统使用多个配置值来发送电子邮件和管理通知。

电子邮件配置

电子邮件通知通过以下方式配置:

  • postmark_server_api_token:用于发送电子邮件的 Postmark API 令牌
  • postmark_sender_email:用作发件人的电子邮件地址
  • unsubscribe_secret_key:用于生成退订链接的密钥

来源

通知队列

通知通过具有可配置策略的 RabbitMQ 队列进行处理。

队列类型目的示例通知
IMMEDIATE立即发送低余额提醒
BATCH捆绑通知代理运行报告
SUMMARY每日/每周摘要每周使用报告
BACKOFF指数退避错误通知
ADMIN管理员通知退款请求

来源

外部集成配置

AutoGPT 支持许多外部集成,每个集成都需要特定的配置。

LLM 提供商配置

语言模型提供商的 API 密钥在 Secrets 类中配置。

如果存在 API 密钥,则会自动为 LLM 提供商创建默认凭据。

来源

OAuth 集成配置

对于基于 OAuth 的集成(Google、GitHub 等),您必须配置客户端 ID 和密钥

该平台支持众多第三方集成

提供商OAuth 支持API 密钥支持环境变量
OpenAIOPENAI_API_KEY
GoogleGOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET
GitHubGITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET
TwitterTWITTER_CLIENT_ID, TWITTER_CLIENT_SECRET
RedditREDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET

来源

数据库配置

数据库连接通过环境变量进行配置

DB_USER=postgres
DB_PASS=your-super-secret-and-long-postgres-password
DB_NAME=postgres
DB_PORT=5432
DB_HOST=localhost
DB_SCHEMA=platform
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?schema=${DB_SCHEMA}&connect_timeout=${DB_CONNECT_TIMEOUT}"
DIRECT_URL="postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}?schema=${DB_SCHEMA}&connect_timeout=${DB_CONNECT_TIMEOUT}"

来源

消息队列配置

RabbitMQ 用于消息队列和各服务之间的通信

RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_DEFAULT_USER=rabbitmq_user_default
RABBITMQ_DEFAULT_PASS=k0VMxyIJF9S35f3x2uaw5IWAl6Y536O7

通知系统专门为不同类型的通知配置了队列

来源

缓存配置

Redis 用于缓存和事件流

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=password

在 Docker 中,Redis 配置为独立的服务

来源

安全配置

一些设置会影响平台的安全性

身份验证

可以启用或禁用身份验证

来源

加密

敏感数据使用可配置的加密密钥进行加密

# generate using `from cryptography.fernet import Fernet;Fernet.generate_key().decode()`
ENCRYPTION_KEY='dvziYgz0KSK8FENhju0ZYi8-fRTfAdlz6YLhdB_jhNw='

来源

CORS 配置

跨源资源共享(CORS)通过 backend_cors_allow_origins 设置进行配置

来源

配置最佳实践

  1. 使用专用的 .env 文件:将 .env.example 文件复制到 .env 并根据您的环境进行自定义。

  2. 切勿提交敏感信息:通过确保 .env 文件位于您的 .gitignore 文件中,将其排除在版本控制之外。

  3. 使用强大、唯一的密钥:为加密、身份验证和其他敏感功能生成安全的随机密钥。

  4. 测试配置更改:更改配置后,测试受影响的组件以确保它们仍然正常工作。

  5. 使用特定于环境的设置:利用 APP_ENV 设置,为开发、暂存和生产环境拥有不同的配置。

  6. 最小化生产环境的变量:在生产环境中,仅使用必要的环境变量,并在安全时依赖默认值。

  7. 记录自定义设置:如果您添加自定义配置选项,请为其编写文档,供其他团队成员参考。

来源