OpenAI 兼容 API 格式详解与实战
## 什么是 OpenAI 兼容 API
OpenAI Chat Completions 已经成为大模型 API 的事实标准。DeepSeek、Qwen、Claude、Gemini 等服务商都会提供一套与 OpenAI 格式兼容的接口,开发者只需要修改 `base_url`、`api_key` 和 `model`,就能用同一套代码调用不同模型。
核心接口通常是:
- 地址:`POST /v1/chat/completions` - 请求头:`Authorization: Bearer` - 请求体:`model`、`messages`、`temperature` 等 - 响应体:`choices[0].message.content`
## 请求示例
使用 `curl` 调用兼容接口:
```bash curl https://api.example.com/v1/chat/completions \ -H "Authorization: Bearer sk-xxxx" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "你好,请介绍你自己"} ], "temperature": 0.7 }' ```
返回结果中,我们通常读取:
```json { "choices": [ { "message": { "role": "assistant", "content": "你好!我是一个 AI 助手。" } } ] } ```
## 使用 Python SDK
安装 OpenAI Python SDK 后,可以直接修改 `base_url` 来对接兼容服务。
```python from openai import OpenAI
client = OpenAI( api_key="sk-xxxx", base_url="https://api.example.com/v1" )
resp = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "user", "content": "用一句话解释 Transformer"} ], temperature=0.7 )
print(resp.choices[0].message.content) ```
## 流式输出
流式输出适合聊天场景,只需要设置 `stream=True`。
```python stream = client.chat.completions.create( model="qwen-plus", messages=[ {"role": "user", "content": "写一首关于海的诗"} ], stream=True )
for chunk in stream: delta = chunk.choices[0].delta.content if delta: print(delta, end="", flush=True) ```
注意:流式响应中,最后一个 chunk 的 `choices` 可能为空,需要做判断。
## 多模型切换实战
将配置放在环境变量中,业务代码无需修改即可切换不同模型。
```python import os from openai import OpenAI
client = OpenAI( api_key=os.getenv("LLM_API_KEY"), base_url=os.getenv("LLM_BASE_URL") )
def chat(prompt): resp = client.chat.completions.create( model=os.getenv("LLM_MODEL", "gpt-4o-mini"), messages=[{"role": "user", "content": prompt}] ) return resp.choices[0].message.content
print(chat("什么是 API 中转站?")) ```
## 注意事项
- `base_url` 通常以 `/v1` 结尾,但部分中转站可能要求填写完整地址。 - 不同模型对 `system`、`user`、`assistant` 角色的支持略有差异。 - 建议用 `try-except` 捕获 `openai.APIError` 等异常,便于排查问题。 - 部分服务商支持 function calling、JSON mode,但字段可能与 OpenAI 略有不同。
## 推荐
如果你希望用一套 API 同时体验 DeepSeek、Qwen、Claude、Gemini 等模型,可以考虑 TokenPocket API 中转站(https://tokenpocket.site)。它完全兼容 OpenAI API 格式,按量计费,支持 USDT 直接支付,新用户注册还会赠送免费额度,适合开发测试和小规模生产环境。