OpenAI 兼容 API 是什么?为什么只改 base_url 就能切换模型?
直接回答
OpenAI 兼容 API 指的是请求路径、参数和返回结构都沿用 OpenAI 接口规范的模型服务。因为 SDK 只是按这套规范拼 HTTP 请求,所以把 base_url 指向兼容的网关、换上对应的 API Key 和模型名,同一份代码就能调用别家的模型。
OpenAI 兼容 API,是指一个模型服务对外暴露的接口与 OpenAI 的接口规范保持一致:同样的路径(如 /v1/chat/completions)、同样的请求字段(model、messages、stream 等)、同样的返回结构(choices、usage 等)。
这套格式已经成为大模型调用的通用约定,很多厂商和接入平台都提供兼容接口。对开发者来说,这意味着换模型不必换 SDK、不必重写调用代码。
关键要点
- OpenAI SDK 本质上是一个 HTTP 客户端,
base_url决定请求发往哪台服务器。 - 切换到兼容服务需要改三项:
base_url、api_key、model。 - EasyAPI 的 OpenAI 兼容 Base URL 是
https://token.easyapi.com/v1,注意结尾包含/v1。 - 兼容的是通用的对话接口格式,不保证厂商独有参数和特殊接口都能原样使用。
- 视频生成这类长耗时任务使用独立的异步接口,不走对话接口。
为什么只改 base_url 就能用
调用 client.chat.completions.create(...) 时,SDK 做的事情很简单:
- 把
base_url和路径/chat/completions拼成完整地址。 - 把
api_key放进请求头Authorization: Bearer <API Key>。 - 把
model、messages等参数序列化成 JSON 发出去。 - 按约定的结构解析返回的 JSON。
SDK 并不关心对面是谁。只要对面的服务认得这个路径、认得这些字段、按同样的结构返回,调用就能成功。接入平台在网关里把这个标准请求转给对应的模型,再把结果包装成同样的结构返回,这就是「改 base_url 就能切换」的原因。
用 curl 看得更清楚,整个请求里和服务方相关的只有三处:
# ① 地址:base_url + /chat/completions
curl https://token.easyapi.com/v1/chat/completions \
-H "Authorization: Bearer $EASYAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash-1017",
"messages": [{"role": "user", "content": "你好"}]
}'
# ② 密钥:Authorization 头 ③ 模型:model 字段
把 model 换成 qwen3.8-max,其余不变,请求就会交给另一家的模型处理。
三项配置分别是什么
| 配置 | 作用 | 在 EasyAPI 上的取值 |
|---|---|---|
base_url | 请求发往的服务地址 | https://token.easyapi.com/v1 |
api_key | 身份凭证,决定用谁的额度 | 控制台令牌管理中创建的 sk- 开头的 Key |
model | 具体调用哪个模型 | 从模型广场复制的模型 ID,区分大小写 |
Python 里的完整写法见 用 OpenAI Python SDK 调用国产大模型要怎么改代码。
兼容不等于完全相同
「兼容」只说明接口格式一致,下面几种情况仍需要单独留意:
- 参数支持因模型而异。 例如部分新模型不接受
max_tokens,需要改用max_completion_tokens;推理强度、工具调用、JSON 输出等能力也不是每个模型都支持。 - 厂商独有功能不在兼容范围内。 专有参数、文件管理、微调等接口,通常只有官方接口提供。
- 不同模态接口不同。 图片生成用图片接口,视频生成是「提交任务 → 轮询 → 下载」的异步流程,见 国内怎么调用 Seedance 2.5 视频生成 API。
- 模型行为不会因此变得一样。 同一段提示词在不同模型上的输出风格、上下文长度和速度都不同,切换后需要重新验证效果。
EasyAPI 的 GET /v1/models 会返回每个模型支持的参数、能力位和可调用端点,切换前可以先查一下。
常见问题
base_url 后面要不要加 /v1?
要加。EasyAPI 的 OpenAI 兼容 Base URL 是 https://token.easyapi.com/v1,SDK 会在它后面拼接 /chat/completions。漏掉 /v1 是接口返回路径错误时很常见的原因。
用了 OpenAI 兼容 API,是不是就只能调 OpenAI 的模型?
不是。「兼容」说的是接口格式,不是模型来源。在 EasyAPI 上用这套格式可以调用 DeepSeek、Qwen、Kimi、GLM、豆包等模型,只要把 model 写成对应的模型 ID。
除了 Python,其他语言也能这样切换吗?
可以。Node.js、Go、Java 等语言的 OpenAI SDK,以及直接发 HTTP 请求,原理都相同:改地址、改密钥、改模型名。
换了 base_url 之后报 401 是怎么回事?
通常是密钥和地址不匹配。API Key 是由具体平台签发的,把 base_url 指向 EasyAPI 后,必须使用 EasyAPI 控制台创建的 Key。排查方法见 调用大模型 API 返回 401 / 429 / 5xx 分别该怎么排查。
小结
OpenAI 兼容 API 是一套被广泛采用的接口约定,SDK 只负责按约定发请求,所以改 base_url、api_key 和 model 就能切换服务与模型。但兼容只覆盖通用格式,独有参数和不同模态的接口仍要对照文档确认,详见 EasyAPI 文档。