问题域/PD-285

多 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 的重复注册代码