多 Provider LLM 抽象
Multi-Provider LLM Abstraction
统一多模型 Provider 调用接口,支持 text/vision 模态和结构化输出验证
子问题
1.Provider 注册与动态路由
2.同步异步双接口统一
3.结构化 JSON 输出与 Pydantic 验证
4.Token 用量按 Provider 追踪
5.LLM JSON 输出不稳定的多级修复与降级
6.Vision 场景跨 Provider 图片格式兼容(HEIC/BMP/TIFF 等)
7.模型名到 Provider 的自动检测与 prefix 路由
各项目的解法1 solutions
Signals
横向对比
| 维度 | OpenViking |
|---|---|
| Provider 路由 | VLMFactory 三路分发 + LiteLLM else 兜底,11 Provider 关键词自动检测 |
| 接口统一 | VLMBase ABC 定义 text/vision × sync/async 4 方法,VolcEngine 继承 OpenAI 复用 |
| 结构化输出 | StructuredVLM 封装 JSON Schema prompt 注入 + 5 级解析降级链 + Pydantic 验证 |
| Token 追踪 | 三层 dataclass(TokenUsage→ModelTokenUsage→Tracker)按 model×provider 二维聚合 |
| 惰性初始化 | 所有 Provider 的 sync/async client 首次调用时才创建,延迟 import 避免缺失依赖 |
| Vision 适配 | VolcEngine 支持 13 种图片格式 magic bytes 检测,OpenAI 仅 4 种 |
最佳实践
1.VLMFactory 工厂模式按 provider 创建实例
2.StructuredVLM 封装 JSON Schema 约束输出
3.惰性初始化 client + 延迟 import 避免未安装 SDK 阻塞启动
4.继承复用兼容 SDK(VolcEngine 继承 OpenAI)减少重复代码
5.json_repair 库作为 JSON 解析最终兜底