问题域/PD-323

多 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 解析最终兜底