厂商调用差异
所有厂商共用同一个 API Key、同一个 Base URL,鉴权和路径见认证与 Base URL。
本页只讲各家真正不一样的地方——协议支持范围、特殊参数限制、思考模式差异。没提到的说明按通用方式调用即可。
协议支持一览
| 厂商 | Chat Completions | Anthropic Messages | Responses API | Gemini 原生 |
|---|---|---|---|---|
| OpenAI | ✅ | — | ✅ | — |
| Anthropic | ✅ | ✅ | ❌ | — |
| ✅ | — | ❌ | ✅ | |
| DeepSeek | ✅ | ✅ | ❌ | — |
| 智谱 GLM | ✅ | ✅ | ❌ | — |
| Kimi | ✅ | ✅ | ❌ | — |
| MiniMax | ✅ | ✅ | ❌ | — |
非 GPT 系模型调 /v1/responses 会返回 not implemented。用 /v1/chat/completions 或 /v1/messages 代替。
不能因为某模型的 /v1/chat/completions 能用就假定它支持 Responses——这是 Codex 接入时最容易踩的坑。
所有厂商的共同约束
这几条对所有非 OpenAI 厂商都适用,先看这里能省掉大部分排查:
不支持 developer 角色 — OpenAI 兼容入口只认 system / user / assistant 三种 role。
Anthropic 通道的 system 走顶层字段 — 不要塞进 messages 数组,用顶层 system 字段传。
多轮对话不要回传思考内容 — 拼接历史时只回传上一轮的 content(OpenAI 通道)或 text 块(Anthropic 通道)。把 reasoning_content 或 thinking 块塞回 messages 会直接报参数错误。
思考链的字段位置 — OpenAI 通道在 choices[].message.reasoning_content,Anthropic 通道在 content 数组的 thinking 块里。
DeepSeek
思考模式只有 pro 能用:
| 模型 | enable_thinking(OpenAI 通道)/ thinking(Anthropic 通道) |
|---|---|
deepseek-v4-pro | ✅ 生效 |
deepseek-v4-flash | ❌ 参数被忽略,不返回思考内容 |
给 flash 传思考参数不会报错,但也不会有思考内容——需要推理链就用 pro。
Kimi
kimi-k3 实测要求 temperature=1,传其他值会报 400。
遇到参数错误先把 temperature 设回 1。
长上下文场景:单次请求超过 200K token 时建议开 stream: true,能明显降低首字延迟。
MiniMax
必须严格按模型列表的写法:MiniMax-M2.7、MiniMax-M3。
写成 minimax-m2.7 会被直接拒绝。这是 MiniMax 唯一一家用大写字母开头的厂商,最容易写错。
智谱 GLM
除共同约束外无特殊限制,按标准 OpenAI 兼容方式调用即可。
Anthropic
原生支持 /v1/messages。Claude 模型有工具 schema 复杂度限制——请求里工具定义过多(约 12 个以上复杂工具)会返回 HTTP 400。
在 Agent 类工具中使用 Claude 时需要精简工具集,具体做法见 Hermes 的 Claude Profile 方案。
Google
除通用接口外支持 Gemini 原生格式 /v1beta/models/{model}:generateContent,模型名写在 URL 路径里。
鉴权两种都行:请求头 x-goog-api-key,或查询参数 ?key=。
必填 contents 字段。常用参数放在 generationConfig 里:maxOutputTokens、temperature、topP。
OpenAI
功能最全的一家,Chat Completions、Responses、图片生成 / 编辑都支持。
图片相关:
| 接口 | 说明 |
|---|---|
/v1/images/generations | 图片生成,用 gpt-image-2 |
/v1/images/edits | 图片编辑,需上传有效图片文件 |
图片编辑的 mask 参数和 stream=true 当前环境实测不稳定,暂不建议使用。
遇到 400 怎么办
按这个顺序排:
- 模型名大小写对不对(尤其 MiniMax)
- 是不是给不支持的模型调了 Responses API
temperature有没有踩到模型的固定值要求(Kimi)- 多轮历史里是不是混进了
reasoning_content/thinking - 有没有用
developer角色 - Claude 场景下工具定义是不是太多
错误响应体通常会说明具体哪个参数有问题,按提示改即可。更多见常见问题。