路由层与 OpenAI 兼容适配:一次模型调用如何落到后端
30 秒导读: 你向 OGX 发一个
{"model": "gpt-4", ...}的 chat completion 请求。OGX 内部 没有"gpt-4"这个东西——它只有一堆 provider(OpenAI、vLLM、Ollama、Bedrock…)。这一章追踪 一个字符串model_id如何被一步步翻译、定位到某个 provider,再被"整形"成标准 OpenAI 调用 打到真实后端。读完你能一口气讲清:"gpt-4"→ 路由表查表 →InferenceRouter委派 →OpenAIMixin.openai_chat_completion→AsyncOpenAI.chat.completions.create的完整链路。
本章是 OGX 全景 的第 3 章。上游怎么把请求送到 Router、provider 怎么被装配进路由表, 见 01 请求生命周期 和 02 Provider 架构; 本章拿到的是"Router 与路由表已经就位"这个起点。服务端的 agentic 编排(Responses)是 04 章, 不在这里讲。
1. 这一章解决的那个小问题
一句话:model 是个字符串,后端是个对象,中间隔着两层。
客户端只知道一个名字("gpt-4"、"my-llama"、"openai/gpt-4o-mini")。OGX 要回答三个问题,
才能真正发出请求:
| 问题 | 谁回答 | 产出 |
|---|---|---|
| 这个名字归哪个 provider? | 路由表(routing table) | 一个 provider 实例 |
| 后端真正认识的模型名是什么? | 路由表 + OpenAIMixin | provider_resource_id(如 gpt-4o-mini) |
| 怎么把请求打成 OpenAI 形状发出去? | OpenAIMixin + openai_compat |