多 LLM Provider 抽象
Multi-LLM Provider Abstraction
统一多个 LLM 提供商的接口差异,实现模型无关的调用层
子问题
1.Provider API 差异适配
2.模型参数兼容性处理
3.推理模型特殊参数管理
4.输出格式归一化
5.多代际模型 thinking/reasoning 参数命名差异适配
6.OpenAI 协议兼容 Provider 的 base_url 与认证统一
7.自定义模型名的宽松验证策略
各项目的解法1 solutions
Signals
横向对比
| 维度 | TradingAgents |
|---|---|
| 抽象层级 | ABC 抽象基类 + 3 个具体 Client 覆盖 6 Provider |
| 协议复用 | OpenAI 协议复用:openai/xai/ollama/openrouter 共享 OpenAIClient |
| 参数兼容 | UnifiedChatOpenAI 自动剥离推理模型不支持的 temperature/top_p |
| 输出归一化 | NormalizedChatGoogleGenerativeAI 将 Gemini list→str |
| 模型验证 | 白名单验证 + Ollama/OpenRouter 放行策略 |
| thinking适配 | Gemini 3 Pro/Flash/2.5 三路 thinking 参数映射 |
最佳实践
1.使用抽象基类定义统一接口,Factory 模式按 provider 分发
2.继承 SDK ChatModel 重写 __init__/invoke 做最小侵入修补
3.OpenAI 协议兼容 Provider 共享同一 Client 类减少代码重复
4.参数白名单透传防止不兼容参数泄漏到 SDK