如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
English | 中文 | 日本語
一款高性能、企业级的AI API透明代理服务,专为需要集成多个AI服务的企业和开发人员设计。基于Go构建,具备智能密钥管理、负载均衡和全面监控能力,适用于高并发生产环境。
详细文档请访问官方文档
GPT-Load作为透明代理服务,完全保留各AI服务提供商的原生API格式:
docker run -d --name gpt-load \
-p 3001:3001 \
-e AUTH_KEY=your-secure-key-here \
-v "$(pwd)/data":/app/data \
ghcr.io/tbphp/gpt-load:latest
[!NOTE] 请将
your-secure-key-here替换为强密码(切勿使用默认值),然后即可登录管理界面:
安装命令:
# 创建目录
mkdir -p gpt-load && cd gpt-load
# 下载配置文件
wget https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/docker-compose.yml
wget -O .env https://raw.githubusercontent.com/tbphp/gpt-load/refs/heads/main/.env.example
# 编辑.env文件,将AUTH_KEY修改为强密码。切勿使用默认值或sk-123456等简单密钥。
# 启动服务
docker compose up -d
部署前必须修改默认管理员密钥(AUTH_KEY)。推荐格式:sk-prod-[32位随机字符串]。
默认安装使用SQLite版本,适用于轻量级单实例应用。
如需安装MySQL、PostgreSQL和Redis,请在docker-compose.yml文件中取消所需服务的注释,配置相应环境变量并重启。
其他命令:
# 检查服务状态
docker compose ps
# 查看日志
docker compose logs -f
# 重启服务
docker compose down && docker compose up -d
# 更新到最新版本
docker compose pull && docker compose down && docker compose up -d
部署后:
[!NOTE] 使用修改后的AUTH_KEY登录管理界面。
源码构建需要本地安装数据库(SQLite、MySQL或PostgreSQL)和Redis(可选)。
# 克隆并构建
git clone https://github.com/tbphp/gpt-load.git
cd gpt-load
go mod tidy
# 创建配置
cp .env.example .env
# 编辑.env文件,将AUTH_KEY修改为强密码。切勿使用默认值或sk-123456等简单密钥。
# 修改.env中的DATABASE_DSN和REDIS_DSN配置
# REDIS_DSN为可选配置,若不配置则启用内存存储
# 运行
make run
部署后:
[!NOTE] 使用修改后的AUTH_KEY登录管理界面。
集群部署要求所有节点连接到同一个MySQL(或PostgreSQL)和Redis,且Redis为必填项。建议使用统一的分布式MySQL和Redis集群。
部署要求:
AUTH_KEY、DATABASE_DSN、REDIS_DSNIS_SLAVE=true详细信息请参考集群部署文档
GPT-Load采用双层配置架构:
1. 静态配置(环境变量)
2. 动态配置(热重载)
系统设置 环境配置
静态配置(环境变量)
服务器配置:
安全配置:
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 管理密钥 | AUTH_KEY | - | 管理端访问认证密钥,请更改为强密码 |
| 加密密钥 | ENCRYPTION_KEY | - | 加密存储API密钥。支持任意字符串,留空则禁用加密。详见数据加密迁移 |
数据库配置:
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 数据库连接 | DATABASE_DSN | ./data/gpt-load.db | 数据库连接字符串(DSN)或文件路径 |
| Redis连接 | REDIS_DSN | - | Redis连接字符串,留空时使用内存存储 |
性能与跨域配置:
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 最大并发请求数 | MAX_CONCURRENT_REQUESTS | 100 | 系统允许的最大并发请求数 |
| 启用跨域资源共享 | ENABLE_CORS | false | 是否启用跨域资源共享(CORS) |
| 允许的源 | ALLOWED_ORIGINS | - | 允许的源,逗号分隔 |
| 允许的方法 | ALLOWED_METHODS | GET,POST,PUT,DELETE,OPTIONS | 允许的HTTP方法 |
| 允许的请求头 | ALLOWED_HEADERS | * | 允许的请求头,逗号分隔 |
| 允许凭据 | ALLOW_CREDENTIALS | false | 是否允许发送凭据 |
日志配置:
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 日志级别 | LOG_LEVEL | info | 日志级别:debug、info、warn、error |
| 日志格式 | LOG_FORMAT | text | 日志格式:text、json |
| 启用文件日志 | LOG_ENABLE_FILE | false | 是否启用文件日志输出 |
| 日志文件路径 | LOG_FILE_PATH | ./data/logs/app.log | 日志文件存储路径 |
代理配置:
GPT-Load会自动从环境变量读取代理设置,以向上游AI服务提供商发起请求。
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| HTTP代理 | HTTP_PROXY | - | HTTP请求的代理服务器地址 |
| HTTPS代理 | HTTPS_PROXY | - | HTTPS请求的代理服务器地址 |
| 不使用代理 | NO_PROXY | - | 逗号分隔的主机或域名列表,用于绕过代理 |
支持的代理协议格式:
http://user:pass@host:porthttps://user:pass@host:portsocks5://user:pass@host:port动态配置(热重载)
基本设置:
| 设置项 | 字段名 | 默认值 | 分组覆盖 | 描述 |
|---|---|---|---|---|
| 项目URL | app_url | http://localhost:3001 | ❌ | 项目基础URL |
| 全局代理密钥 | proxy_keys | 初始值来自AUTH_KEY | ❌ | 全局有效的代理密钥,逗号分隔 |
| 日志保留天数 | request_log_retention_days | 7 | ❌ | 请求日志保留天数,0表示不清理 |
| 日志写入间隔 | request_log_write_interval_minutes | 1 | ❌ | 日志写入数据库周期(分钟) |
| 启用请求体日志 | enable_request_body_logging | false | ✅ | 是否在请求日志中记录完整请求体内容 |
请求设置:
| 设置项 | 字段名 | 默认值 | 分组覆盖 | 描述 |
|---|---|---|---|---|
| 请求超时时间 | request_timeout | 600 | ✅ | 转发请求完整生命周期超时时间(秒) |
| 连接超时时间 | connect_timeout | 15 | ✅ | 与上游服务建立连接的超时时间(秒) |
| 空闲连接超时时间 | idle_conn_timeout | 120 | ✅ | HTTP客户端空闲连接超时时间(秒) |
| 响应头超时时间 | response_header_timeout | 600 | ✅ | 等待上游响应头的超时时间(秒) |
| 最大空闲连接数 | max_idle_conns | 100 | ✅ | 连接池最大总空闲连接数 |
| 每主机最大空闲连接数 | max_idle_conns_per_host | 50 | ✅ | 每个上游主机的最大空闲连接数 |
| 代理URL | proxy_url | - | ✅ | 用于转发请求的HTTP/HTTPS代理,为空时使用环境变量配置 |
密钥配置:
| 设置项 | 字段名 | 默认值 | 分组覆盖 | 描述 |
|---|---|---|---|---|
| 最大重试次数 | max_retries | 3 | ✅ | 单个请求使用不同密钥的最大重试次数 |
| 黑名单阈值 | blacklist_threshold | 3 | ✅ | 密钥累计失败多少次后被列入黑名单 |
| 密钥验证间隔 | key_validation_interval_minutes | 60 | ✅ | 后台定时密钥验证周期(分钟) |
| 密钥验证并发数 | key_validation_concurrency | 10 | ✅ | 后台验证无效密钥的并发数 |
| 密钥验证超时时间 | key_validation_timeout_seconds | 20 | ✅ | 后台验证单个密钥的API请求超时时间(秒) |
GPT-Load支持API密钥的加密存储。您可以随时启用、禁用或更改加密密钥。
查看数据加密迁移详情
[!IMPORTANT] 重要提醒:
- 一旦ENCRYPTION_KEY丢失,加密数据将无法恢复! 请安全备份此密钥。建议使用密码管理器或安全密钥管理系统。
- 迁移前必须停止服务,以避免数据不一致。
- 强烈建议备份数据库,以防迁移失败需要恢复。
- 为确保安全,密钥应使用32个字符或更长的随机字符串。
- 迁移后确保
.env中的ENCRYPTION_KEY与--to参数匹配。- 如果禁用加密,请移除或清空
ENCRYPTION_KEY配置。
# 生成安全随机密钥(32个字符)
openssl rand -base64 32 | tr -d "=+/" | cut -c1-32
访问管理控制台的地址:(默认地址)
Web管理界面提供以下功能:
OpenAI 聊天补全格式 (openai):
/v1/chat/completions - 聊天对话/v1/completions - 文本补全/v1/embeddings - 文本嵌入/v1/models - 模型列表OpenAI 响应格式 (openai-response):
/v1/responses - 统一响应生成/v1/models - 模型列表Gemini 格式:
/v1beta/models/*/generateContent - 内容生成/v1beta/models - 模型列表Anthropic 格式:
/v1/messages - 消息对话/v1/models - 模型列表(如可用)OpenAI Python SDK:
from openai import OpenAI
client = OpenAI(
api_key="your-proxy-key", # 使用代理密钥
base_url="http://localhost:3001/proxy/openai" # 使用代理端点
)
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[{"role": "user", "content": "Hello"}]
)
Google Gemini SDK (Python):
import google.generativeai as genai
# 配置 API 密钥和基础 URL
genai.configure(
api_key="your-proxy-key", # 使用代理密钥
client_options={"api_endpoint": "http://localhost:3001/proxy/gemini"}
)
model = genai.GenerativeModel('gemini-2.5-pro')
response = model.generate_content("Hello")
Anthropic SDK (Python):
from anthropic import Anthropic
client = Anthropic(
api_key="your-proxy-key", # 使用代理密钥
base_url="http://localhost:3001/proxy/anthropic" # 使用代理端点
)
response = client.messages.create(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Hello"}]
)
[!IMPORTANT] 作为透明代理服务,GPT-Load 完全保留了各类 AI 服务的原生 API 格式和认证方式。您只需替换端点地址,并使用管理界面中配置的 代理密钥 即可实现无缝迁移。
感谢所有为 GPT-Load 做出贡献的开发者!
非常感谢 LINUX DO 社区的支持!
本项目由 DigitalOcean 支持。
MIT 许可证 - 详见 LICENSE 文件。
来自真实用户的反馈,见证轩辕镜像的优质服务