更新于 2026-04-14
OpenAI 兼容 API 完整指南
「OpenAI-compatible API」是 2023 年后 LLM 生态的事实标准。本文讲这个标准是什么、为什么几乎所有供应商都实现它、以及如何把现有 OpenAI SDK 切到 Claude / Gemini / DeepSeek 等模型。
什么是 OpenAI 兼容 API
OpenAI 最早定义了 /v1/chat/completions 端点的请求/响应 schema。由于 OpenAI SDK 用户基数极大,后来的模型供应商(DeepSeek、Mistral、Groq 等)和聚合网关(OpenRouter、ModelServer)都选择实现**一模一样的 schema**,这样用户只需要把 base_url 改成他们的域名,代码就能跑。
关键端点
| 端点 | 用途 |
|---|---|
POST /v1/chat/completions | 聊天补全(最常用) |
POST /v1/embeddings | 向量 embedding |
GET /v1/models | 模型列表 |
POST /v1/completions | 旧版文本补全(逐步废弃) |
如何切换:改两行搞定
用 OpenAI Python SDK 为例:
Python
from openai import OpenAI
# 原来走 OpenAI 官方
# client = OpenAI(api_key="sk-openai-...")
# 切到 ModelServer(支持 40+ 模型)
client = OpenAI(
base_url="https://modelserver.dev/v1",
api_key="sk-...", # ModelServer 的 key
)
# 代码一字不改
resp = client.chat.completions.create(
model="claude-sonnet-4-6", # 或 gpt-5, gemini-2.5-pro, deepseek-v3...
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)Node.js 同理:
Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://modelserver.dev/v1",
apiKey: "sk-...",
});
const resp = await client.chat.completions.create({
model: "claude-sonnet-4-6",
messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);base_url 末尾要带 /v1
OpenAI SDK 假设 base_url 已经包含
/v1。https://modelserver.dev/v1 是对的,https://modelserver.dev 会导致 SDK 拼出 /chat/completions(缺 /v1)。Anthropic SDK 正好相反(不能带 /v1)。Streaming
设 stream: true,服务端发 SSE 事件:
Python
stream = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "写一首关于春天的短诗"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content or ""
print(delta, end="", flush=True)Function calling / Tool use
OpenAI 标准的 tools / tool_choice 参数 ModelServer 全部支持,无论后端是 Claude 还是 DeepSeek 还是 Gemini。
OpenAI 兼容模式的局限
有些非 OpenAI 独有的功能在 OpenAI schema 里放不下:
- Anthropic 的
cache_control(prompt caching) - Anthropic 的
tool_useblock 中间态 - Gemini 的
generationConfig细节
这些情况下用对应的**原生 API 端点**更合适。ModelServer 同时支持 Anthropic 原生 /v1/messages,详见 Anthropic API Proxy。
ModelServer 支持的模型(部分)
| Family | 代表 model ID |
|---|---|
| Anthropic Claude | claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5 |
| OpenAI | gpt-5, gpt-4o, o1 |
gemini-2.5-pro, gemini-2.5-flash | |
| DeepSeek | deepseek-v3, deepseek-r1 |
完整清单看 Pricing。