搭建私有中转网关,对接通义千问、Gemini
不少开发者在同时使用通义千问、Gemini 和 Claude 时,要维护多套 API Key、多套接口地址,调用逻辑也被拆得到处都是。
私有中转网关可以把这些模型收敛到一个统一出口,只对外暴露一个 OpenAI 兼容接口。
本文会从零开始,讲清楚如何在一台云服务器上用 Docker 部署中转网关、配置三个模型渠道并完成调用验证。
部署前需要准备什么
开始之前,先确认下面这些条件已经具备:
- 一台可访问外网的服务器,建议 1 核 2G 以上,系统使用 Debian/Ubuntu 或 CentOS 均可。
- 服务器上安装好 Docker 和 Docker Compose,可以用官方脚本一键安装。
- 准备好三家模型的 API Key:通义千问(DashScope 控制台)、Gemini(Google AI Studio)、Claude(Anthropic Console)。
- 如果希望用固定域名访问,提前把域名解析到服务器 IP,并配置好反向代理;不配置的话,直接用服务器 IP 加端口也可以。
安装 Docker 的命令这里不多展开,执行 curl -fsSL https://get.docker.com | bash 安装后,用 docker -v 检查版本即可。
用 Docker 拉起一个中转网关
以 one-api 这类开源网关为例,先创建数据目录:
mkdir -p /data/one-api && cd /data/one-api
创建 docker-compose.yml,内容如下:
version: '3'
services:
one-api:
image: justsong/one-api
container_name: one-api
restart: always
ports:
- "3000:3000"
environment:
- TZ=Asia/Shanghai
volumes:
- /data/one-api/data:/data
执行启动命令:
docker compose up -d
等待镜像拉取并启动,访问 http://服务器IP:3000。
默认管理员账号为 root,初始密码是 123456,首次登录后一定要立即修改。
添加通义千问、Gemini 和 Claude 渠道
登录后台后,进入「渠道」→「新建渠道」,分别添加三个模型:
- 通义千问:类型选择「通义千问 Qwen」,填入 DashScope API Key。模型列表按实际可用模型填写,例如
qwen-plus、qwen-max。 - Gemini:类型选择「Google Gemini」,填入 AI Studio 生成的 API Key。模型选择实际可用的,如
gemini-1.5-pro。 - Claude:类型选择「Anthropic Claude」,填入 Anthropic 的 API Key。模型按需填写,如
claude-3-5-sonnet。
保存后,在「令牌」→「添加令牌」里生成一个访问令牌。
这个令牌就是统一出口的 Key,后续所有请求都使用它,不再直接暴露各家的原始 Key。
统一出口怎么调用
网关启动后,统一接口地址是:
http://服务器IP:3000/v1
调用时把客户端里的 base_url 替换成这个地址,api_key 填刚才生成的令牌。
用 curl 快速验证通义千问:
curl http://服务器IP:3000/v1/chat/completions \
-H "Authorization: Bearer 你生成的令牌" \
-H "Content-Type: application/json" \
-d '{"model":"qwen-plus","messages":[{"role":"user","content":"你好"}]}'
能正常返回 JSON 内容,说明通义千问渠道已经打通。
同样的请求,把 model 换成 gemini-1.5-pro 或 claude-3-5-sonnet,就能验证另外两家模型。
容易踩的坑和排查方法
实际操作中,下面几个问题出现频率最高:
- 渠道类型选错:不同网关接入同一家模型时,可能用厂商专用类型,也可能用 OpenAI 兼容格式。建议优先选网关明确标注的模型厂商类型,不要自己猜测。
- 模型名写错:网关不会自动映射模型名,填写的模型 ID 必须和上游真实模型一致,否则会报
model not found。 - 网络不通:Gemini 和 Claude 的 API 在国内服务器直连可能超时。建议把网关部署在能访问这些服务的区域,或者在服务器上配置代理,并在网关容器环境变量里设置
HTTP_PROXY和HTTPS_PROXY。 - 端口没放行:如果使用云服务器,需要在安全组和系统防火墙里放行 3000 端口,否则外部无法访问后台和接口。
- 密钥失效:登录后台,在渠道列表里点击「测试」,可以快速看到具体错误信息,比如 401 或 403。
上线前还要做这几件事
- 修改默认管理员密码,并关闭不必要的用户注册接口。
- 为网关配置 HTTPS 域名,避免 API Key 在传输过程中被明文窃取。
- 通过令牌设置额度、模型分组和 IP 白名单,防止被刷量。
- 定期查看容器日志和渠道统计,及时了解各家模型的调用情况和错误率。
私有中转网关的价值不只是省事,它把密钥管理、模型切换和调用统计都收拢到了一起。
按上面的流程跑一遍,你就能用一个固定地址调用通义千问、Gemini 和 Claude。
实际部署时以镜像官方文档和后台实际显示为准,遇到问题优先查看渠道测试报错和容器日志。