本文件提供了有关 AutoGPT 平台配置的详细信息。它涵盖了环境变量、配置文件和控制系统行为的设置。有关安装平台的信息,请参阅 安装,有关运行您的第一个代理,请参阅 快速入门指南。
AutoGPT 使用分层配置系统,结合了环境变量、配置文件和默认设置。该系统设计灵活,允许您在不同级别覆盖默认配置。
配置系统主要基于 Settings 类,该类封装了 Config(应用程序设置)和 Secrets(敏感凭据)。配置值根据特定的优先级顺序从环境变量、.env 文件和默认值加载。
来源
您将在 .env 文件中设置大多数选项。提供了一个 .env.example 模板供您复制和自定义。
在应用程序启动时会自动加载 .env 文件,并为常规配置设置和秘密提供值。
来源
对于持久的配置更改,会使用 config.json 文件。此文件会自动在数据目录中创建,并存储通过 API 对配置所做的任何更改。
当配置值更新时,只有更改的字段会被写入 config.json 文件。这允许选择性地覆盖默认值。
来源
配置系统围绕几个关键类构建
Settings 类是访问配置的主要入口点。它包含:
config:应用程序配置设置(非敏感)secrets:敏感设置,如 API 密钥和凭据来源
Config 类定义了所有非敏感的应用程序设置。
示例配置选项
| 类别 | 设置 | 描述 | 默认 |
|---|---|---|---|
| 工作进程 | num_graph_workers | 图执行的最大工作进程数 | 10 |
| 工作进程 | num_node_workers | 节点执行的最大工作进程数 | 5 |
| 服务 | websocket_server_port | WebSocket 服务器端口 | 8001 |
| 服务 | execution_manager_port | 执行管理器端口 | 8002 |
| 特性 | enable_auth | 启用认证 | True |
| 特性 | enable_credit | 启用用户积分系统 | 否 |
来源
Secrets 类定义了敏感配置,如 API 密钥和凭据。
来源
AutoGPT 支持不同的环境配置
app_env 设置决定了应用程序环境。
local:本地开发环境dev:开发/暂存环境prod:生产环境来源
behave_as 设置决定了应用程序应如何表现。
local:表现为本地实例(使用本地 API 密钥和配置)cloud:表现为云实例(使用云特定行为)来源
在 Docker 中运行时,环境变量通过 docker-compose 文件直接传递到容器。主要环境变量包括:
docker-compose 示例
来源
AutoGPT 平台中的每个服务都可以通过专用设置进行配置。
服务通信通过主机/端口设置进行配置。
关键网络配置选项
| 服务 | 主机设置 | 端口设置 | 默认端口 |
|---|---|---|---|
| REST API | pyro_host | agent_api_port | 8006 |
| WebSocket | websocket_server_host | websocket_server_port | 8001 |
| 执行管理器 | pyro_host | execution_manager_port | 8002 |
| 调度器 | pyro_host | execution_scheduler_port | 8003 |
| 通知服务 | pyro_host | notification_service_port | 8007 |
来源
服务使用 AppService 框架相互通信,该框架通过 FastAPI 提供基于 HTTP 的 RPC。
服务客户端会使用适当的配置自动创建。
来源
通知系统使用多个配置值来发送电子邮件和管理通知。
电子邮件通知通过以下方式配置:
postmark_server_api_token:用于发送电子邮件的 Postmark API 令牌postmark_sender_email:用作发件人的电子邮件地址unsubscribe_secret_key:用于生成退订链接的密钥来源
通知通过具有可配置策略的 RabbitMQ 队列进行处理。
| 队列类型 | 目的 | 示例通知 |
|---|---|---|
| IMMEDIATE | 立即发送 | 低余额提醒 |
| BATCH | 捆绑通知 | 代理运行报告 |
| SUMMARY | 每日/每周摘要 | 每周使用报告 |
| BACKOFF | 指数退避 | 错误通知 |
| ADMIN | 管理员通知 | 退款请求 |
来源
AutoGPT 支持许多外部集成,每个集成都需要特定的配置。
语言模型提供商的 API 密钥在 Secrets 类中配置。
如果存在 API 密钥,则会自动为 LLM 提供商创建默认凭据。
来源
对于基于 OAuth 的集成(Google、GitHub 等),您必须配置客户端 ID 和密钥
该平台支持众多第三方集成
| 提供商 | OAuth 支持 | API 密钥支持 | 环境变量 |
|---|---|---|---|
| OpenAI | 否 | 是 | OPENAI_API_KEY |
| 是 | 否 | GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | |
| GitHub | 是 | 否 | GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET |
| 是 | 否 | TWITTER_CLIENT_ID, TWITTER_CLIENT_SECRET | |
| 否 | 是 | REDDIT_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)通过 backend_cors_allow_origins 设置进行配置
来源
使用专用的 .env 文件:将 .env.example 文件复制到 .env 并根据您的环境进行自定义。
切勿提交敏感信息:通过确保 .env 文件位于您的 .gitignore 文件中,将其排除在版本控制之外。
使用强大、唯一的密钥:为加密、身份验证和其他敏感功能生成安全的随机密钥。
测试配置更改:更改配置后,测试受影响的组件以确保它们仍然正常工作。
使用特定于环境的设置:利用 APP_ENV 设置,为开发、暂存和生产环境拥有不同的配置。
最小化生产环境的变量:在生产环境中,仅使用必要的环境变量,并在安全时依赖默认值。
记录自定义设置:如果您添加自定义配置选项,请为其编写文档,供其他团队成员参考。
来源