guide
声称 OpenAI 兼容的网关,实际不兼容的地方
改两行 base_url 就能迁移——这句话在 LLM 上大致成立,在媒体端点上完全不成立。
「Drop-in replacement for OpenAI SDK, just change the base URL and API key」是网关最常见的宣传语。它在对话接口上大体成立,但有几个坑必须知道,否则你会在迁移后的第一周debug 到怀疑人生。
1. 媒体端点根本不兼容 OpenAI 格式
图像、视频、语音、3D 在 OpenAI 那边只有 /v1/images/* 这一套,网关侧要暴露几十种模态和上百个模型,不可能塞进一个格式。媒体一律走自有端点,参数名、计费单位、返回结构都不同。
2. 限流可能不返回任何提示头
有些网关超限只返回 429,不带 X-RateLimit-Limit / Remaining / Retry-After。客户端拿不到剩余配额,也无法知道何时该退避多久,只能自己写死退避策略。这不是 bug,是实现选择,但你要提前知道。
3. 路径写错可能返回 401 而不是 404
网关把鉴权中间件放在路由之前,于是任何未匹配路径都会先撞上鉴权失败。排查时看到 401 别去找 token,先确认路径对不对。
4. 流式返回 200 不代表流是完整的
SSE 建立之后,中途的错误是以事件形式出现在流里的,HTTP 状态码早在握手时就定死了。客户端必须自己处理流中断,并且要忽略以冒号开头的 keep-alive 注释行。
迁移前的检查清单
逐模型查它支持哪些协议和哪些采样参数;确认媒体端点的契约;确认限流响应头;确认错误码体系;确认计费口径是按 token 还是按次。这些查完,迁移风险基本就清零了。