如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
英文 | 中文 | 日本語
一款高性能、企业级的AI API透明代理服务,专为需要集成多个AI服务的企业和开发者设计。采用Go语言构建,具备智能密钥管理、负载均衡和全面监控能力,适用于高并发生产环境。
详细文档请访问 官方文档
感谢TeamoRouter对本项目的赞助!TeamoRouter是企业级Agentic LLM网关,让开发者、AI团队和企业无需单独订阅,即可通过统一API访问Claude Code、Codex、Gemini CLI等AI代理,折扣高达90%。它连接官方提供商和可信合作伙伴(如OpenAI、Anthropic、Vertex、Azure和AWS Bedrock),提供经过验证的Agent协议兼容性、请求可追溯性、接近官方的TTFT、99.6%的SLA以及高达5,000 QPM。还包括集中式billing、团队管理、BYOK、智能路由、分析、提供商优化和专属支持。Teamo Desktop支持一键设置,无需API密钥管理或手动配置,新用户通过此链接注册可获得首次充值10%折扣。
感谢Unity2.ai对本项目的赞助!Unity2.ai是面向个人开发者、团队和企业的高性能AI模型API中继平台。长期服务于中国头部企业,每日处理超过300亿token调用,支持5000 RPM高并发。支持余额计费、首次充值奖励、捆绑订阅、企业开票和专属集成支持。通过此链接注册可获得2余额;加入官方群可再获得10余额,最高12***免费额度。
非常感谢LINUX DO社区的支持!
本项目由DigitalOcean支持。
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详情请参考 集群部署文档
1. 静态配置(环境变量)
.env 文件或系统环境变量设置2. 动态配置(热重载)
系统设置 环境配置
| 设置项 | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
| 服务端口 | 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代理,留空则使用环境变量配置 |
通过以下地址访问管理控制台:(默认地址)
Web管理界面提供以下功能:
GPT-Load通过分组名称将请求路由到不同的AI服务。使用方法如下:
1. 代理端点格式
{group_name}:在管理界面中创建的分组名称{original_api_path}:与原始AI服务路径保持完全一致2. 认证方式
在Web管理界面中配置代理密钥,支持系统级和分组级代理密钥。
3. OpenAI接口示例
GPT-Load目前支持两种与OpenAI兼容的分组类型:
openai(OpenAI聊天补全格式)openai-response(OpenAI响应格式)假设已创建名为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响应格式示例(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"}'
4. Gemini接口示例
假设已创建名为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 格式和认证方式。您只需替换端点地址,并使用管理界面中配置的 代理密钥,即可实现无缝迁移。
感谢所有为 GPT-Load 做出贡献的开发者!
MIT 许可协议 - 详见 LICENSE 文件。
来自真实用户的反馈,见证轩辕镜像的优质服务