一句话定义:兼容 API(Compatible API)指的是某家模型服务把自己的接口做成「和 OpenAI 长得一样」——请求地址、字段名、返回结构大致对得上。但「兼容」只保证你的代码能跑通,不保证行为一致;换个端点(endpoint),流式输出、工具调用、报错的细节都可能变,这就是「兼容 API 不等价」。
打个比方:这就像 USB-C 口。插头都能插进去,但各家快充协议是私有的,插得上不等于充得快,更不等于能传视频。兼容 API 提供的是「插得进去」这一层,协议层各自发挥。
常见的几个易错点:
| 维度 | 「兼容」通常保证 | 实际容易出现的偏差 |
|---|---|---|
| 请求字段 | 主要字段名一致 | 可选字段被静默忽略,默认值不同(如温度、最大长度) |
| 流式(Streaming) | 支持 stream=true | 分片切法不同、结束标志不同、心跳与空行处理不同,前端解析会卡住或提前中断 |
| 工具调用(Tool Calling) | 支持 tools 参数 | 并行调用、参数 JSON 拼装完整度、强制调用某个工具的写法各不相同 |
| 报错格式(Error) | 有 error 对象 | HTTP 状态码、错误码枚举、是否可重试的语义不一致,重试逻辑容易误判 |
| 用量统计 | 返回 usage | 字段缺失或统计方式不同,成本报表对不上 |
| 结构化输出(Structured Output) | 支持 JSON 模式 | 约束强度不同,偶尔仍会多出解释性文字 |
和相邻概念的区别:一是「SDK 兼容」和「API 兼容」不是一回事,官方 SDK 包了一层适配,换服务商时用 SDK 往往比直接用 HTTP 更平滑;二是「接口兼容」和「模型等价」更不是一回事,接口一致只说明调用方式相同,模型对提示词(Prompt)的理解、对系统消息的服从度、拒答倾向都可能有差别。兼容是语法层面的,等价是语义层面的。
对从业者的意义:把「兼容」当成零成本迁移是最大的坑。切换或混用多家服务时,至少要跑一遍回归测试(Regression Test):流式拼接、工具调用成功率、报错重试、用量统计各验一次;中间加一层自己的适配层(Adapter),把各家差异收在一处,别散落在业务代码里。对普通职场人来说,感受就是「换了个后端,原来好用的提示词突然不灵了」「助手偶尔答一半就断」,这通常不是你的问题,是接口行为变了。
具体支持范围各家不同,以官方文档页面的说明为准。
