
API网关后端负载均衡【免费下载链接】gpt-loadSelf-hosted AI gateway for multi-channel, multi-credential setups — API keys and subscription accounts, scheduling, failover, request logs and usage. 自托管 AI 网关多渠道多凭据统一接入含密钥与订阅账号、调度容错、日志与用量。项目地址https://gitcode.com/gh_mirrors/gp/gpt-load点击查看免费下载本文以 GPT-Load 2.0 为主线完整讲解这一自托管 AI 网关的架构设计、快速部署、首次配置、支持协议与内置渠道、数据库与密钥安全、全部环境变量以及从 1.x 平滑切换的注意事项。读完本文你将掌握如何用一条 Base URL 加一个 AccessKey 统一管理 OpenAI、Anthropic、Gemini、Codex、Claude、Grok 等多渠道的 API Key 与订阅账号并理解其调度容错与日志用量体系的实现原理。一、为什么需要 GPT-Load统一入口背后的设计GPT-Load 的核心思想极其简洁你的应用只需要配置一个地址Base URL和一个 AccessKey上游的服务商、账号、凭据、模型与路由策略全部在管理界面中完成。这样应用侧完全无需改造代码即可获得多凭据调度、故障隔离与用量统计能力。围绕这一思想README 明确了四项核心能力统一入口保留原生协议官方 API、云平台、模型服务和兼容中转统一管理客户端继续使用 OpenAI、Anthropic 或 Gemini 原生接口不需要引入任何 SDK 或协议转换层。统一管理 API Key 与订阅账号Codex、Claude、Antigravity、Grok 等订阅渠道与普通 API Key 渠道共享同一套凭据管理、调度与健康体系。内置调度与故障隔离多凭据调度、可配置权重、重试、冷却cooldown、黑名单与会话亲和session affinity降低单个凭据过载或失效对整体可用性的影响。可观测、易部署、数据自持单个 Go 二进制内嵌管理界面提供健康、路由、日志、用量与成本估算存储层支持 SQLite、MySQL、PostgreSQL凭据在本地加密保存。从源码结构看这些能力被清晰地拆分为多个内部模块internal/gateway承担数据面协议路由与转发、internal/scheduler承担渠道与凭据的调度选择、internal/control承担管理面渠道、分组、AccessKey、用量等 CRUD 与 API、internal/storage承担持久化。整个进程入口在 main.go无参数时直接启动服务带参数时进入help、version、update、service等子命令分发。二、快速开始五分钟跑起一个网关1. 启动服务前置条件是需要 Docker 与 Docker Compose。官方 Compose 文件位于 docker-compose.yml启动过程如下git clone --depth 1 https://github.com/tbphp/gpt-load.git cd gpt-load cp .env.example .env docker compose up -d确认服务已启动curl --fail http://127.0.0.1:3001/health该健康检查端点返回{status:ok,version:...}其实现位于 internal/app/http_routes.goDocker Compose 的healthcheck也使用同一端点见 docker-compose.yml。首次启动会自动生成管理密钥读取并妥善保存docker compose exec gpt-load sh -c cat /app/data/auth.key打开 http://127.0.0.1:3001用该密钥登录控制台。也可以在启动前通过.env里的AUTH_KEY显式指定管理密钥。默认只监听本机地址127.0.0.1不会直接暴露到公网。管理密钥的解析逻辑位于 internal/platform/authkey/authkey.go显式设置AUTH_KEY时校验其不含空白字符未设置时在DATA_DIR下读取或生成auth.key文件。docker compose exec命令读取的正是这个文件。2. 完成首次配置首次配置只需三步添加渠道Channel选择上游服务填入一个或多个 API Key订阅渠道按界面提示完成 OAuth 授权或导入凭据。创建分组Group选择渠道配置可用模型与运行策略。创建 AccessKey设置允许访问的分组与客户端协议把生成的 AccessKey 交给应用使用。订阅渠道的 OAuth 回调端口Codex、Claude、Antigravity 的 OAuth 客户端使用固定回调端口。Compose 会把它们发布到HOST配置的地址默认是127.0.0.1设置HOST0.0.0.0时这些回调端口也会发布到宿主机的全部网络接口。因为端口由上游客户端固定同一台机器同一时刻只能运行一个默认 Compose 实例。固定端口1455、54545、51121的发布规则直接写在 docker-compose.yml 中。如果通过 SSH 或远程浏览器操作浏览器的localhost可能到不了 GPT-Load——此时把完整回调 URL 复制到授权弹窗里即可完成流程。三、界面与可观测性分组总览统一展示渠道、模型、凭据数量、流量与健康状态用量统计页面展示请求趋势、缓存命中率、Token 分类与成本估算。管理界面相关的构建产物位于internal/webui内嵌于单个 Go 二进制的 Web 资源与web/src前端源码采用 Vue 技术栈请求日志、用量与成本计算的后端实现分别位于internal/requestlog、internal/usage与internal/pricing。四、支持范围客户端协议与内置渠道客户端协议数据面 HTTP 路由的挂载定义在 internal/gateway/http_routes.go命名空间前缀覆盖/v1、/v1beta、/mistral全部请求先经过 AccessKey 认证httproute.AuthAccessKey再按端点目录分派。具体协议与入口如下表协议主要入口OpenAI Chat CompletionsPOST /v1/chat/completionsOpenAI Responses/v1/responses及其资源路径OpenAI ImagesPOST /v1/images/...OpenAI EmbeddingsPOST /v1/embeddingsRerankPOST /v1/rerankMistral 原生/v1/ocr、/v1/audio/...Anthropic MessagesPOST /v1/messagesGemini/v1beta/models/...Gemini EmbeddingsPOST /v1beta/models/{model}:embedContent/:batchEmbedContents这些协议在internal/dialect中分别有独立的解析与转换实现例如 internal/dialect/mistral.go 精确匹配/v1/ocr、/v1/audio/transcriptions、/v1/audio/speech及/mistral/v1/audio/voices等 Mistral 原生路径internal/dialect/gemini.go 定义了geminiGenerationPrefix /v1beta/models/对应的嵌入端点行为由 internal/dialect/gemini_embeddings_test.go 大量用例覆盖。README 中列出的全部端点包括 Rerank 与 Mistral OCR/音频均在测试中存在对应验证。内置渠道官方与云平台OpenAI、Anthropic、Gemini、xAI、Azure OpenAI、AWS Bedrock、Google Vertex AI常用模型服务DeepSeek、Moonshot AI、SiliconFlow、Zhipu AI、Alibaba、Volcengine、OpenRouter、Cline、Groq、Cerebras、Mistral、Nebius、Parasail、Wafer、Hugging Face聊天、Cohere文本重排序、OpenCode Go、OpenCode Zen订阅渠道Codex、Claude、Antigravity、Grok自定义OpenAI Compatible任意兼容中转各渠道的协议适配注册在 internal/channel/builtins.go 及internal/channel/modules子目录中渠道的品牌图标来自 Lobe Icons仅用于标识对应的上游服务商商标权归各自所有者本项目与这些服务商没有从属或背书关系。五、部署与数据SQLite、外部数据库与密钥安全数据与密钥的存放位置Docker Compose 默认使用应用托管的 SQLite数据存放在gpt-load-data具名卷中包含数据库gpt-load.db、auth.key和encryption.key。卷挂载与DATA_DIR/app/data的固定配置见 docker-compose.yml。[!IMPORTANT]encryption.key用于解密渠道凭据。备份或迁移时数据库和密钥必须一起保存密钥丢失或被替换后已有加密凭据无法恢复且当前版本不支持主密钥轮换。凭据加密的实现位于 internal/platform/encryption/encryption.go使用ENCRYPTION_KEY派生出 AES-256-GCM 密钥与 HMAC-SHA256 指纹密钥域分离派生gpt-load/encryption/aes-256-gcm/v1与gpt-load/encryption/fingerprint-hmac/v1每次加密都使用随机 nonceLoadOrCreateKeyMaterial同文件第 71-87 行在未显式配置时于DATA_DIR/encryption.key生成 32 字节随机密钥。这就是密钥必须与数据库一起备份这一要求的源码依据。使用外部数据库通过统一的DATABASE_DSN连接 SQLite、MySQL 或 PostgreSQLmysql://user:passworddb.example:3306/gpt_load?charsetutf8mb4collationutf8mb4_bin postgres://user:passworddb.example:5432/gpt_load?sslmoderequireDSN 解析逻辑位于 internal/platform/config/config.go空值回落到${DATA_DIR}/gpt-load.db应用托管模式仅允许 SQLite支持file:、sqlite:前缀的 SQLite 路径或 URL以及mysql、postgres/postgresql网络 URL不支持的 scheme 会直接报错。MySQL 与 PostgreSQL 连接池上限由DATABASE_MAX_OPEN_CONNECTIONS默认 10与DATABASE_MAX_IDLE_CONNECTIONS默认 5控制且要求空闲连接数不大于打开连接数见 config.goSQLite 始终使用单连接。常用运维命令docker compose logs -f # 查看日志 docker compose pull docker compose up -d # 更新到最新 2.x 镜像 docker compose stop # 停止服务关于镜像标签需要特别留意官方 Compose 使用ghcr.io/tbphp/gpt-load:2。GA 前2跟随已验证的 2.0 Beta 和 RCGA 后只跟随稳定的 2.x。镜像精确标签会去掉 Git tag 的v前缀例如2.0.0-beta.252.0-beta则保留为 2.0 Beta 通道latest继续留在 1.x因此不要用latest拉取 2.0。使用原生二进制非 Docker 部署从 GitHub Releases 下载对应平台的文件建议先用随附的SHA256SUMS校验chmod x ./gpt-load-linux-amd64 HOST127.0.0.1 DATA_DIR./data ./gpt-load-linux-amd64启动后访问 http://127.0.0.1:3001。提供 Linux、macOSamd64 / arm64与 Windows 共五个平台的便携构建gpt-load-windows-amd64.exe继续以前台模式运行。Windows 普通用户可改为下载gpt-load-windows-setup.exe。双击并确认管理员权限后安装器会注册并启动低权限 Windows 服务、设置开机启动并创建桌面和开始菜单中的 GPT-Load 管理页面快捷方式。安装过程中会显示首次生成的管理密钥请在关闭页面前保存密钥仍保存在%ProgramData%\GPT-Load\data\auth.key。服务配置目录为%ProgramData%\GPT-Load并从其中读取.env数据目录为%ProgramData%\GPT-Load\data。覆盖安装会先优雅停止服务再更新Windows 卸载会移除程序和服务但保留数据。高级用户仍可使用gpt-load-windows-amd64.exe service start|stop|restart|status管理已安装服务——这一子命令体系对应 main.go 中的命令分发逻辑service分支。六、环境配置全部变量详解应用启动时读取当前目录的.env已有的进程环境变量优先。这一加载逻辑实现在 internal/platform/config/config.go调用godotenv.Load()读取.env但os.Getenv读取的是进程环境变量因此已有的进程环境变量永远覆盖.env。除非特别说明修改后需要重启进程或容器。完整配置模板见 .env.example。变量默认值说明HOST127.0.0.1Native 模式的监听地址也是 Compose 主端口和 OAuth 回调端口的默认宿主机发布地址Compose 容器内部固定监听0.0.0.0见 docker-compose.yml。PORT3001HTTP 服务端口必须为1–65535Compose 同时用于容器端口、宿主机发布端口和健康检查。端口校验在 config.go。BIND_ADDRESS空继承HOST仅用于 Compose单独覆盖主服务端口的宿主机发布地址不改变 OAuth 回调端口。OAUTH_CALLBACK_BIND_ADDRESS空继承HOST仅用于 Compose单独覆盖 OAuth 固定回调端口1455、54545、51121的宿主机发布地址。GRACEFUL_SHUTDOWN_TIMEOUT10收到停止信号后等待请求结束的最长时间正整数单位秒。该值在 runtime.go 中被转换为进程优雅停止的 context 超时收到第二个信号会强制停止见 main.go。CONTAINER_STOP_GRACE_PERIOD15sCompose 强制停止容器前的等待时间使用 Docker duration建议大于GRACEFUL_SHUTDOWN_TIMEOUT对应 docker-compose.yml 的stop_grace_period。READ_TIMEOUT60HTTP 请求读取超时正整数单位秒。IDLE_TIMEOUT120HTTP keep-alive 空闲连接超时正整数单位秒。DATA_DIR./data托管数据库、auth.key、encryption.key和运行状态文件的目录官方 Compose 固定为/app/dataWindows Setup 服务固定为%ProgramData%\GPT-Load\data。DATABASE_DSN空使用${DATA_DIR}/gpt-load.db空值使用应用托管的 SQLite非空值支持 SQLite 路径或 URL、MySQL URL、PostgreSQL URL并视为运维方管理的外部数据库。容器内文件路径必须位于已挂载目录。DATABASE_MAX_OPEN_CONNECTIONS10MySQL 和 PostgreSQL 的最大打开连接数必须为正整数SQLite 始终使用单连接。DATABASE_MAX_IDLE_CONNECTIONS5MySQL 和 PostgreSQL 的最大空闲连接数必须为正整数且不大于DATABASE_MAX_OPEN_CONNECTIONSSQLite 始终使用单连接。AUTH_KEY空读取或生成${DATA_DIR}/auth.key管理界面和/api管理接口的 Bearer 密钥不是数据面 AccessKey。ENCRYPTION_KEY空读取或生成${DATA_DIR}/encryption.key用于加密渠道凭据更换或丢失后无法解密已有凭据必须与数据库一起备份。CLIENT_IP_HEADER空使用连接 IP客户端 IP 请求头如X-Forwarded-For或CF-Connecting-IP缺失或无效时回退到连接 IP。统一用于日志、访问密钥 IP 限制等支持 IPv4/IPv6。修改后重启。TRUSTED_PROXIES空可选逗号分隔的代理 IP 或 CIDR仅在设置CLIENT_IP_HEADER时生效。留空直接信任所选请求头需由部署环境保证其可信配置后仅信任匹配的连接来源否则使用连接 IP。X-Forwarded-For有名单时从右向左取首个不可信 IP全可信时取最左侧无名单时取最左侧其他头只接受单个 IP。修改后重启。HTTP_PROXY空HTTP 上游请求的环境代理。HTTPS_PROXY空HTTPS 上游请求的环境代理。NO_PROXY空逗号分隔的不经过环境代理的主机、域名或 IP。LOG_LEVELinfo支持panic、fatal、error、warn、warning、info、debug、trace无效值会告警并回退到info。LOG_FORMATtext支持text、json其他值会导致启动失败校验见 config.go。MODELS_DEV_AUTO_SYNC_ENABLED未设置初始默认true未设置时使用管理界面的持久化设置设置后强制开启或关闭 Models.dev 自动同步并使管理界面中的同名选项变为只读。环境代理仅在凭据、Group 和全局设置都未指定代理时生效即代理优先级为凭据级 Group 级 全局设置 环境代理。补充Codex 语音中继Voice Relay相关变量.env.example中还包含一组用于 Codex 实时语音/媒体中继的变量CODEX_LIVE_PUBLIC_IP客户端可达的媒体 IP必填、CODEX_LIVE_UDP_PORT_MIN/CODEX_LIVE_UDP_PORT_MAX默认50000/50127、CODEX_LIVE_MAX_SESSIONS默认 32范围 1–1024、CODEX_LIVE_ICE_SERVERS可选 JSON 数组最多 16 个 ICE/STUN/TURN 服务器。这些配置的完整解析与校验在 config.go例如CODEX_LIVE_PUBLIC_IP必须是合法 IP、UDP 端口必须成区间、TURN 服务器必须带凭据。启用语音中继时需叠加 Compose override 文件docker compose -f docker-compose.yml -f docker-compose.voice.yml up -d对应的端口发布与必填校验见 docker-compose.voice.yml。Codex 语音默认直连媒体Off / Direct / Relay 三选一可在系统设置中切换Codex 分组可覆盖此默认值只有 Relay 模式会使用上述进程级媒体配置且现有媒体中继部署必须选择 Relay。七、调度与故障隔离的实现原理README 声称的多凭据调度、可配置权重、重试、冷却、黑名单与会话亲和在源码中都有对应落点调度选择internal/scheduler包负责无 IO、无持久化的纯内存调度决策。核心的Iterator见 internal/scheduler/scheduler.go按 Group 与 RouteMode 分层构建候选池candidatePool对每个候选凭据按其权重weightedCredential参与选择并记录已尝试tried与跳过skippedGroups的状态全部候选耗尽时返回ErrExhausted。权重、优先级、路由模式等策略在internal/scheduler下有fair.go、priority_test.go、route_strategy_test.go等实现与测试佐证。冷却cooldowninternal/scheduler/model_cooldown.go中的modelCooldownUntil与Iterator.CooldownUntil依据模型与凭据的冷却时间表计算下一次可路由时刻用于失败后熔断。会话亲和affinityinternal/gateway/affinity.go基于 AccessKey、客户端协议与 Prompt 缓存键派生亲和键affinity.DeriveKey优先把会话固定到同一凭据上减少缓存失效底层缓存在internal/affinity。执行与重试internal/execution提供请求执行边界、重试预算retry_budget测试见 internal/gateway/retry_budget_test.go与错误分类internal/health负责错误分类与执行判定execution_judge决定是否对凭据降级或熔断internal/ratelimit提供 AccessKey 级别 RPM 与并发限制internal/gateway/concurrency.go中的TryAcquireGroup。从架构上讲internal/gateway/handler.go的Handler在每次数据面请求中依次完成认证 AccessKeyhttp_routes.go→ 并发准入 → 配额准入 → 调度选路 → 上游转发 → 用量捕获任何一步失败都按错误分类进入重试或熔断流程。八、从 1.x 切换完整重写带来的兼容性边界[!WARNING] GPT-Load 2.0 是完整重写的新版本不能打开、导入或原地迁移 1.x 数据。如果你正在使用 1.x请遵守以下迁移纪律为 2.0 部署独立的数据库、DATA_DIR、端口和 Docker 卷不要指向 1.x 的数据目录在隔离环境中完整验证新实例的渠道、分组与 AccessKey 行为验证完成后再切换业务流量并在回滚窗口关闭前保留原 1.x 部署以便随时回滚1.4.x 维护线的文档请查阅官方文档站README 中给出 https://www.gpt-load.com/docs 入口。九、开源依赖与安全边界GPT-Load 的部分能力构建在这些开源项目之上项目作用许可证Bifrost Core各服务商的认证、请求响应转换、流式与用量归一化Apache-2.0CLIProxyAPI订阅渠道的 OAuth 与执行适配MITLobe Icons管理界面中的渠道品牌图标MITGPT-Load 自身负责凭据存储、账号选择、调度、重试、健康、亲和、日志与用量策略。第三方声明见 THIRD_PARTY_NOTICES.md许可证全文位于 LICENSES/每个 Release 另附覆盖 Go 依赖的 CycloneDX SBOM。十、写在最后一条实用的启动检查清单完成部署后建议按以下顺序做一次自检curl --fail http://127.0.0.1:3001/health确认进程健康确认auth.key已安全保存且encryption.key与数据库放在同一备份介质中在管理界面完成渠道 → 分组 → AccessKey三步配置并用生成的 AccessKey 实测一次POST /v1/chat/completions若使用订阅渠道确认 OAuth 回调端口1455、54545、51121在防火墙中可达查看分组总览与用量统计页确认凭据健康状态与 Token/成本数据正常入库如需外部数据库先在.env中配置DATABASE_DSN并重启验证internal/storage侧连接池参数生效。至此你已具备从部署、配置到理解调度原理的完整闭环可以放心地把 GPT-Load 作为统一入口接入你的多渠道 AI 应用。赞分享API网关后端负载均衡【免费下载链接】gpt-loadSelf-hosted AI gateway for multi-channel, multi-credential setups — API keys and subscription accounts, scheduling, failover, request logs and usage. 自托管 AI 网关多渠道多凭据统一接入含密钥与订阅账号、调度容错、日志与用量。项目地址https://gitcode.com/gh_mirrors/gp/gpt-load点击查看免费下载相关推荐Kedro 管道接入 Prefect 2.0自托管 Server 部署与 Flow 编排实战指南Kedro 管道接入 Prefect 2.0自托管 Server 部署与 Flow 编排实战指南 本文基于 Kedro 官方部署文档 docs/deploy/数据工程工作流自动化CCX统一多协议 AI API 代理网关——多上游接入、智能调度与单端口一键部署实战CCX统一多协议 AI API 代理网关——多上游接入、智能调度与单端口一键部署实战 CCX 是一个以 Go 后端为核心的单端口 AI API 代理与协议转换API网关LLM 网关后端Pyodide 下载与部署完全指南CDN 渠道、GitHub Releases 与自托管静态服务器实战Pyodide 下载与部署完全指南CDN 渠道、GitHub Releases 与自托管静态服务器实战 导读 Pyodide 是一个基于 WebAssembl科学计算开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考