问题域/PD-198

多供应商 LLM 抽象

Multi-Provider LLM Abstraction

统一多个 LLM 供应商的接口差异,实现供应商无关的模型调用

子问题

1.供应商参数差异归一化

2.模型验证与兼容性

3.推理模型特殊处理

4.响应格式统一

5.Gemini 版本间 thinking 参数名不兼容(thinking_level vs thinking_budget)

6.OpenAI 兼容协议供应商的 base_url 和 API key 来源差异

7.双层 LLM 策略下的供应商特定参数透传

各项目的解法1 solutions

Signals

横向对比

维度TradingAgents
抽象层级ABC 基类 + 工厂函数,2 个抽象方法最小接口
供应商数量6 供应商:OpenAI/Anthropic/Google/xAI/OpenRouter/Ollama
参数归一化子类继承覆写构造函数,推理模型自动剥离 temperature/top_p
响应归一化Google 子类重写 invoke(),list[dict] → str
模型验证白名单 + 开放混合策略,主流严格校验 + 自托管放行
协议复用xAI/Ollama/OpenRouter 共用 OpenAIClient,仅改 base_url

最佳实践

1.使用抽象基类定义统一接口

2.工厂模式按 provider 分发创建

3.通过子类继承 SDK 类覆写构造函数实现参数剥离,而非在工厂层过滤

4.OpenAI 兼容供应商共用同一客户端类,用 provider 字段区分 base_url 路由

5.白名单校验主流供应商 + 开放通过自托管/路由器供应商的混合验证策略