OpenAI 兼容接口适配层:别把业务绑死在一个 Provider 上
整理如何用 provider adapter 隔离模型服务差异,让云模型、本地模型和兼容接口能被统一调用。
很多模型服务提供 OpenAI 兼容接口,本地推理框架也常提供类似入口。vLLM 文档就包含 OpenAI-Compatible Server,LiteLLM 也定位为多 provider 代理和兼容层。[provider-001][provider-002]
业务代码只认抽象接口
不要在业务逻辑里散落 provider 判断。可以统一成:
type ChatRequest = {
messages: Array<{ role: string; content: string }>;
responseFormat?: "text" | "json";
};
type ChatProvider = {
complete(request: ChatRequest): Promise<string>;
};Provider adapter 的目标,是让替换模型服务不等于重写业务流程。
兼容不代表完全一致
即使接口路径兼容,不同 provider 在模型能力、错误码、流式输出、工具调用、结构化输出上仍可能不同。因此适配层要记录能力矩阵。
建议维护:
- 是否支持流式。
- 是否支持工具。
- 是否支持 JSON schema。
- 最大上下文。
- 错误码映射。
综合这些资料可以推断:OpenAI 兼容接口能降低接入成本,但真正的可移植性来自你自己的 adapter 和评估集。
参考资料
- [provider-001] vLLM Docs, “OpenAI-Compatible Server”, https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html
- [provider-002] LiteLLM Docs, “Proxy Server”, https://docs.litellm.ai/docs/simple_proxy