多 LLM Provider 管理
Multi-Provider Management
统一接口管理多个 LLM 提供者,动态模型发现与连接池复用
子问题
1.provider trait 统一抽象
2.feature flag 条件编译
3.动态模型发现
4.HTTP/WS 连接池复用
5.provider 引导配置
6.模型能力静态推断(context window/tools/vision 前缀匹配)
7.自定义 OpenAI 兼容 endpoint 动态注册
8.异步 registry 重建与序列号防过时覆盖
各项目的解法1 solutions
Signals
横向对比
| 维度 | Moltis |
|---|---|
| Provider 抽象 | LlmProvider trait 统一 complete/stream/stream_with_tools 三模式 |
| 注册机制 | 表驱动 OPENAI_COMPAT_PROVIDERS 静态数组 + feature flag 门控编译 |
| 模型发现 | 三路发现:/v1/models + /api/tags(Ollama) + OAuth 动态刷新 |
| 连接池策略 | 双单例:shared_http_client(reqwest) + shared_ws_pool(WebSocket 分桶池) |
| 凭证管理 | 四源合并:env → config → home key store → current key store,Secret 包裹防泄露 |
| 降级排序 | 四级亲和度 fallback:同模型跨 provider → 订阅制 → 同 provider 其他模型 → 其他 |
最佳实践
1.trait 抽象隔离 provider 差异
2.feature flag 减小二进制体积
3.共享 HTTP client 复用连接池
4.API key 立即哈希后存入连接池 key,不存储明文
5.原子写入凭证文件(temp + rename + 0o600 权限)
6.表驱动消除 OpenAI 兼容 provider 的重复注册代码