English | 中文 | 日语
一款高性能、企业级的AI API透明代理服务,专为需要集成多个AI服务的企业和开发者设计。基于Go构建,具备智能密钥管理、负载均衡和全面监控能力,适用于高并发生产环境。
详细文档请访问 官方文档
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 服务端口 | PORT | 3001 | HTTP服务器监听端口 |
| 服务地址 | HOST | 0.0.0.0 | HTTP服务器绑定地址 |
| 读取超时 | SERVER_READ_TIMEOUT | 60 | HTTP服务器读取超时(秒) |
| 写入超时 | SERVER_WRITE_TIMEOUT | 600 | HTTP服务器写入超时(秒) |
| 空闲超时 | SERVER_IDLE_TIMEOUT | 120 | HTTP连接空闲超时(秒) |
| 优雅关闭超时 | SERVER_GRACEFUL_SHUTDOWN_TIMEOUT | 10 | 服务优雅关闭等待时间(秒) |
| 从节点模式 | IS_SLAVE | false | 集群部署中的从节点标识 |
| 时区 | TZ | Asia/Shanghai | 指定时区 |
安全配置:
| 设置项 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
| 管理密钥 | 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密钥的加密存储。您可以随时启用、禁用或更改加密密钥。
查看数据加密迁移详情
GPT-Load通过组名将请求路由到不同的AI服务。使用方法如下:
{group_name}:在管理界面中创建的组名{original_api_path}:与原始AI服务路径保持完全一致在Web管理界面中配置代理密钥,支持系统级和组级代理密钥。
GPT-Load目前支持两种与OpenAI兼容的组类型:
openai(OpenAI Chat Completions格式)openai-response(OpenAI Responses格式)假设已创建名为openai的组:
原始调用:
curl -X POST https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-openai-key" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4.1-mini", "messages": [{"role": "user", "content": "Hello"}]}'
代理调用:
curl -X POST http://localhost:3001/proxy/openai/v1/chat/completions \
-H "Authorization: Bearer your-proxy-key" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4.1-mini", "messages": [{"role": "user", "content": "Hello"}]}'
需修改的内容:
https://api.openai.com替换为http://localhost:3001/proxy/openaiOpenAI Responses格式示例(openai-response组):
curl -X POST http://localhost:3001/proxy/openai-response/v1/responses \
-H "Authorization: Bearer your-proxy-key" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4.1-mini", "input": "Hello"}'
假设已创建名为gemini的组:
原始调用:
curl -X POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent?key=your-gemini-key \
-H "Content-Type: application/json" \
-d '{"contents": [{"parts": [{"text": "Hello"}]}]}'
代理调用:
curl -X POST http://localhost:3001/proxy/gemini/v1beta/models/gemini-2.5-pro:generateContent?key=your-proxy-key \
-H "Content-Type: application/json" \
-d '{"contents": [{"parts": [{"text": "Hello"}]}]}'
需修改的内容:
https://generativelanguage.googleapis.com替换为http://localhost:3001/proxy/geminikey=your-gemini-key替换为代理密钥假设已创建名为anthropic的组:
原始调用:
curl -X POST https://api.anthropic.com/v1/messages \
-H "x-api-key: sk-ant-api03-your-anthropic-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "Hello"}]}'
代理调用:
curl -X POST http://localhost:3001/proxy/anthropic/v1/messages \
-H "x-api-key: your-proxy-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "Hello"}]}'
需修改的内容:
https://api.anthropic.com替换为http://localhost:3001/proxy/anthropicx-api-key头中的原始API密钥替换为代理密钥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 格式和身份验证方式。您只需替换端点地址,并使用管理界面中配置的 代理密钥(Proxy Key)即可实现无缝迁移。
感谢所有为 GPT-Load 做出贡献的开发者!
非常感谢 LINUX DO 社区的支持!
本项目由 DigitalOcean 提供支持。
MIT 许可证 - 详见 LICENSE 文件。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务