Provider 架构:注册、解析与自动路由装配
30 秒导读: OGX 对外只暴露一套稳定的 API(inference、vector_io、tool_runtime……),背后真正干活的是可插拔的 provider(OpenAI、vLLM、Faiss、Brave Search……)。这一章讲清楚一件事:一份 YAML 配置,是怎么变成一个「活的、可调用的实现字典」的——中间要经过 provider 声明(spec)、注册表收集、依赖拓扑排序、动 态实例化、协议校验,还要为几个特殊 API 自动装配「路由表 + 路由器」这对搭档。
本章在全书的位置: 先读 index 建立全景、01 请求生命周期 了解服务器骨架(
resolve_impls就是在服务器启动时被调用的)。本章讲装配——把 provider 装进一个impls字典;运行时那个字典里的 Router 到底怎么查表、把一次模型调用落到某个后端,是 03 路由层与 OpenAI 适配 的事,本章不展开。
1. 这章解决什么问题(先建直觉)
一句话定义: OGX 是一台「OpenAI 兼容的 API 服务器」,但它自己不实现推理、不实现向量库——它把每个 API 的实现权外包给 provider,再用一套解析器把你选中的 provider 装配起来。
为什么需要这层抽象? 想象你写了一堆代码调 OpenAI SDK。今天想换成本地 vLLM,明天想接 Anthropic,后天要在向量检索里换 Faiss 为 pgvector。如果这些后端的差异会渗透到你的业务代码,那每换一次都要改代码。OGX 的答案是:
- API 是契约(一个 Python
Protocol,如Inference),永远不变; - provider 是实现(一个 adapter 类),可随便换;
- 换后端 = 改一行 YAML,业务代码一个字不动。