为什么需要统一 API 网关?
对接多个大模型时,痛点是统一的:每家都有自己的密钥、URL、请求格式,甚至参数名都不一样。本地用 Ollama 跑得好好的,切到云端文心一言就报错,因为 temperature 和 top_p 不对付。运维那边更头疼,几十个微服务到处散落着 api key,过期了都不知道谁在用。
解决思路是加一个 API 网关层。这个 Docker 镜像就能干这事:它把文心一言、ChatGLM、通义千问这些主流模型的差异都封装起来,对外只露一个标准的 OpenAI 接口。你的业务代码一行不用改,只改 model 名就能来回切。它还自带密钥管理、流量控制和额度统计。
部署启动
整个过程零编译,不依赖 Python 环境,有 Docker 就行。下面以 Ubuntu 为例,CentOS 命令一样。
拉镜像并运行,一行搞定:
docker run -d \
--name one-api \
-p 3000:3000 \
-v /path/to/one-api-data:/app/data \
--restart=always \
registry.cn-hangzhou.aliyuncs.com/one-api/one-api:latest
-v 是把配置持久化到宿主机,不然容器一删配置全没。--restart=always 让容器开机自启。
等十来秒,看看日志确认启动:
docker logs one-api | grep "Server is running"
如果看到 Server is running on http://localhost:3000,就可以下一步了。
首次登录与安全加固
浏览器访问 http://你的服务器 IP:3000。首次必须用 root 账号登录,初始密码 123456。
进去之后第一件事——改密码。点右上角头像 → '修改密码',设个强的。别拖,这步不做,任何人都能接管你的网关。
接入文心一言
左侧菜单「渠道管理」→ 点「+ 新建渠道」,填下表:
| 字段 | 填写内容 | 说明 |
|---|---|---|
| 渠道名称 | 百度文心一言 | 随便写,好认就行 |
| 渠道类型 | 文心一言 | 下拉选 |
| API Key | your_ernie_api_key | 百度千帆控制台获取 |
| Base URL | https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro | V3 接口地址 |
| 模型名称 | ernie-4.5-turbo | 你实际开通的模型 |
保存后出现绿色勾,说明通了。
创建令牌并调用
「令牌管理」→「+ 新建令牌」:
- 令牌名称:
前端项目调用 - 过期时间:按需
- 允许模型:勾选
ernie-4.5-turbo - IP 限制:填你的出口 IP 段
复制生成的令牌(格式 sk-xxx)。然后这样发请求:
curl -X POST \
-H \
-H \
-d

