跳到主要内容One API 统一调用 ChatGLM/文心一言等 20+ 大模型 | 极客日志PythonSaaSAI
One API 统一调用 ChatGLM/文心一言等 20+ 大模型
介绍如何使用 One API 统一调用 ChatGLM、文心一言等 20+ 大模型。通过 Docker 快速部署网关,配置智谱、百度等渠道密钥,将异构接口转换为标准 OpenAI RESTful 协议。支持 Python SDK、curl 及 Postman 零改造调用,提供令牌管理、权限隔离、流式响应及故障自动重试等企业级能力,解决多模型接入碎片化问题。
竹影清风23 浏览 One API 统一调用 ChatGLM/文心一言等 20+ 大模型
你是否经历过这样的困扰:
- 为调用 ChatGLM 要配一套请求逻辑,换到文心一言又要重写密钥格式和接口地址;
- 同时对接通义千问、讯飞星火、腾讯混元,每个平台的鉴权方式、参数命名、错误码都不一样;
- 想给团队共享模型能力,却得为每人分发不同厂商的 API Key,还无法统一管控用量和权限;
- 客户临时要求切换模型——改代码、测兼容、上线验证,半天时间就没了。
别再被碎片化的大模型接入拖慢节奏了。今天介绍的这个工具,只改一行 URL、换一个 Key,就能让现有 OpenAI 兼容代码无缝跑通 20+ 国产与国际主流大模型——它就是 One API。
这不是一个需要深度定制的中间件,而是一个开箱即用的'大模型协议翻译器':把所有异构模型的调用,统一收束成标准 OpenAI RESTful 接口。你不用关心背后是百度的 ERNIE Bot、阿里的 Qwen,还是智谱的 GLM-4,只要会调 ChatGPT,你就已经会用它。
本文将带你从零完成部署、配置、调用全流程,不讲抽象架构,只说你能立刻上手的操作细节。全程无需改业务代码,不依赖特定编程语言,工程师可直接集成进 CI/CD。
1. 为什么你需要 One API:统一接口不是噱头,而是真实痛点
在实际工程中,'支持多模型'常被当作功能亮点宣传,但落地时往往变成维护噩梦。我们拆解三个最典型的现实卡点:
1.1 接口协议五花八门,适配成本远超预期
| 厂商 | 请求 URL 示例 | 鉴权方式 | 消息体字段 | 流式响应标识 |
|---|
| OpenAI | https://api.openai.com/v1/chat/completions | Bearer sk-xxx | messages, model, temperature | stream: true + SSE |
| 百度文心一言 | https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro | access_token=xxx(需先换 token) | messages, model, temperature → 实际为 temperature 和 top_p | stream: true + JSON Lines |
| 阿里通义千问 | https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation | Authorization: Bearer your-dashscope-key | input.messages, model, parameters.temperature | stream: true + 自定义分隔符 |
你会发现:
- 即使字段名相同(如
model),可选值范围完全不同(gpt-4-turbo vs qwen-max);
- 流式返回解析逻辑必须为每个平台单独实现;
- 错误码体系毫无关联(
401 invalid_apikey vs 50001 access_token expired)。
One API 做的第一件事,就是把这些差异全部抹平——对外只暴露一个 地址,所有请求都按 OpenAI 规范接收,内部自动路由、转换、重试、兜底。
/v1/chat/completions
1.2 权限与用量管理缺失,团队协作风险高
很多团队早期用个人 Key 硬编码在脚本里,结果出现:
- 某成员离职,所有服务因 Key 失效集体中断;
- 某个测试脚本疯狂调用,耗尽整月额度却找不到责任人;
- 客户 A 想用 Qwen,客户 B 只允许调 ChatGLM,但后端代码无法区分。
One API 内置完整的令牌(Token)生命周期管理:
- 为每个项目/客户端生成独立令牌,绑定额度、过期时间、IP 白名单;
- 支持按用户分组(default/vip/svip)分配可用模型池,VIP 组可调 Gemini+Qwen,普通组仅限 GLM;
- 所有调用自动记账,实时查看'谁在什么时间用了哪个模型多少 token'。
这不再是'能用就行',而是真正具备生产环境所需的可观测性与可控性。
1.3 部署极简,但能力不妥协
它没有选择复杂微服务架构,而是以单二进制文件为核心:
- Docker 镜像仅 80MB,无 Python/Node.js 运行时依赖;
- 数据全落盘到
/data 目录,断电不丢配置;
- 管理后台自带 Web UI,无需额外搭建前端;
- 支持负载均衡——同一令牌请求可自动分发至多个渠道,防止单点故障。
一句话总结:它把企业级能力,压缩进了'一条 docker run 命令'的交付粒度里。
2. 三分钟完成部署:Docker 一键启动,不碰配置文件
部署 One API 不需要理解 Go 语言、不需配置 Nginx 反向代理、不需手动编译。你只需要确认两件事:
① 你的机器已安装 Docker(官网安装指南);
② 你有权限创建本地目录(如 /opt/oneapi)。
2.1 方式一:单命令快速体验(推荐首次尝试)
docker run --name one-api -d \
--restart always \
-p 13000:3000 \
-e TZ=Asia/Shanghai \
-v $(pwd)/oneapi-data:/data \
justsong/one-api
命令说明:
-p 13000:3000 将容器内 3000 端口映射到宿主机 13000 端口(你可改为其他未占用端口);
-v $(pwd)/oneapi-data:/data 将当前目录下 oneapi-data 文件夹挂载为数据目录,确保重启后配置不丢失;
justsong/one-api 是官方维护的 Docker 镜像,自动拉取最新稳定版。
等待 5 秒,访问 http://localhost:13000,你将看到登录页。
默认账号:root,密码:123456(登录后第一件事:立即修改密码!)
2.2 方式二:docker-compose 长期使用(推荐生产环境)
在任意目录新建 docker-compose.yml 文件,内容如下:
version: '3.8'
services:
oneapi:
container_name: oneapi
image: justsong/one-api:latest
restart: unless-stopped
ports:
- "13000:3000"
volumes:
- ./oneapi-data:/data
environment:
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
服务启动后,同样访问 http://localhost:13000 登录。
优势:便于版本锁定(如 justsong/one-api:v0.6.0)、集成健康检查、后续扩展日志/监控更方便。
3. 配置你的第一个模型通道:以 ChatGLM 和文心一言为例
登录后台后,你面对的是一个清晰的模块化界面。核心操作集中在两个地方:渠道管理(对接模型)和令牌管理(分发调用凭证)。我们以国内最常用的两个模型为例,演示如何让它们'听懂'你的 OpenAI 请求。
3.1 添加 ChatGLM 渠道(智谱 AI)
- 左侧菜单点击 渠道管理 → 添加渠道;
- 填写以下关键字段:
- 类型:选择
Zhipu AI(智谱);
- 名称:输入
chatglm4-prod(自定义,用于识别);
- 分组:勾选
default(表示所有普通用户可用);
- 模型:自动列出
glm-4, glm-3-turbo 等,勾选你需要的;
- 密钥:粘贴你在 https://bigmodel.cn 获取的 API Key;
- 代理:留空(直连)或填写公司内部代理地址(如
http://proxy.internal:8080)。
提示:One API 会自动检测密钥格式有效性,填错会红色提示。保存后,右侧'状态'列显示绿色✔即代表通道连通。
3.2 添加文心一言渠道(百度)
- 再次点击 添加渠道;
- 填写:
- 类型:
Baidu ERNIE Bot;
- 名称:
wenxin-4-prod;
- 分组:同样勾选
default;
- 模型:勾选
ernie-bot-4(或 ernie-bot-turbo);
- 密钥:此处需填写 Access Token,不是 AK/SK!获取方式:
- 代理:同上,按需填写。
注意:文心一言的 Token 有效期为 30 天,One API 支持自动刷新(需在系统设置中开启'自动刷新 Access Token')。
3.3 验证通道是否生效
添加完成后,回到 渠道管理 列表页,你会看到两个新条目。点击右侧 测试 按钮,输入一段测试消息(如'你好'),点击发送。
如果返回类似以下 JSON,说明通道已就绪:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1717021234,
"model": "glm-4",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "你好!我是 GLM-4,很高兴为你服务。"},
"finish_reason": "stop"
}
]
}
此时,你已成功将 ChatGLM 和文心一言'翻译'成了 OpenAI 协议。
4. 调用实操:用 Python/Shell/Postman,零改造接入
现在,所有模型对你而言,只剩下一个统一入口:http://localhost:13000/v1/chat/completions。
下面展示三种最常见调用方式,全部基于标准 OpenAI SDK 或 curl,无需任何修改。
4.1 Python 调用(兼容 openai==1.0+)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:13000/v1",
api_key="sk-xxx-your-one-api-token"
)
response = client.chat.completions.create(
model="glm-4",
messages=[{"role": "user", "content": "用 Python 写一个快速排序"}],
temperature=0.7
)
print(response.choices[0].message.content)
运行效果:输出 Python 版快排代码。你甚至可以将 model 参数换成 ernie-bot-4,同一段代码立即切换到文心一言。
4.2 curl 命令行调用(调试利器)
curl http://localhost:13000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxx-your-one-api-token" \
-d '{ "model": "qwen-max", "messages": [{"role": "user", "content": "请解释 Transformer 架构的核心思想"}], "stream": false }'
返回结果与 OpenAI 原生接口完全一致,可直接用现有 JSON Schema 校验。
4.3 Postman 配置(可视化调试)
- 新建 Request,URL 设为
http://localhost:13000/v1/chat/completions;
- Headers 添加:
Authorization: Bearer sk-xxx-your-one-api-token
Content-Type: application/json
- Body 选择
raw → JSON,粘贴请求体;
- 发送,查看响应。
5. 进阶能力:让统一调用真正服务于业务
One API 的价值不仅在于'能调',更在于'管得好、用得巧'。以下是三个高频实用场景的落地方法。
5.1 场景一:为不同客户分配专属模型池(权限隔离)
假设你为 A 公司提供 AI 客服,只允许调用 Qwen;为 B 公司做内容生成,需开放 GLM-4+Gemini。
操作路径:
- 用户管理 → 添加用户,创建
a-company 和 b-company 两个账号;
- 渠道管理 → 编辑对应渠道,在'分组'列取消勾选
default,改为新建分组 a-group / b-group;
- 用户管理 → 编辑用户,将
a-company 的分组设为 a-group,b-company 设为 b-group;
- 令牌管理 → 为各用户生成令牌,令牌自动继承其分组权限。
结果:A 公司令牌调用 ernie-bot-4 会返回 403 错误,B 公司令牌则可自由切换模型。
5.2 场景二:流式响应实现'打字机效果'
前端需要逐字返回,提升交互感?One API 原生支持 OpenAI 标准 SSE 流式协议:
response = client.chat.completions.create(
model="glm-4",
messages=[{"role": "user", "content": "写一首关于春天的七言绝句"}],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end='', flush=True)
输出效果:字符逐个打印,无需前端额外解析,兼容所有 OpenAI 流式 SDK。
5.3 场景三:失败自动重试 + 多渠道兜底
网络抖动导致某次文心一言调用超时?One API 默认开启:
- 单次请求失败后,自动按配置策略重试(最多 3 次);
- 若配置了多个渠道(如同时添加了 Qwen 和 GLM-4),可设置'负载均衡策略'为
random 或 round-robin,自动 fallback;
- 在 渠道管理 → 编辑渠道 中,可单独为每个渠道设置'权重',例如 Qwen 权重 80%,GLM-4 权重 20%,实现灰度发布。
6. 总结:统一接口,是 AI 工程化的起点而非终点
One API 解决的从来不是一个'能不能调'的问题,而是'要不要为每个模型重复造轮子'的效率问题。它把大模型接入的复杂性,封装成一次部署、两次配置、三次调用的确定性流程。
- 如何用一条 Docker 命令,在 3 分钟内获得 20+ 模型的统一网关;
- 如何为 ChatGLM、文心一言等国产主力模型配置通道,并验证连通性;
- 如何用原生 OpenAI SDK,零代码改造调用任意后端模型;
- 如何通过分组、令牌、负载均衡,实现企业级的权限与稳定性管控。
真正的生产力解放,不在于追逐最新模型,而在于让已有能力快速、安全、可控地流动起来。当你不再为接口协议焦头烂额,才能真正聚焦于:如何用 AI 重构产品逻辑、优化用户体验、创造业务价值。
相关免费在线工具
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online