返回文章列表

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 和评估集。

参考资料

  1. [provider-001] vLLM Docs, “OpenAI-Compatible Server”, https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html
  2. [provider-002] LiteLLM Docs, “Proxy Server”, https://docs.litellm.ai/docs/simple_proxy