多 LLM Provider 适配
Multi-LLM Provider Adapter
统一接入多种 LLM API 后端,屏蔽差异提供一致接口
子问题
1.API差异抽象
2.认证方式统一
3.流式输出适配
4.reasoning/thinking 模式跨 Provider 兼容
5.按角色/Action 粒度的模型分配与配置覆盖
6.OpenAI 兼容 API 的流式 usage 返回位置差异
各项目的解法1 solutions
Signals
横向对比
| 维度 | MetaGPT |
|---|---|
| 注册方式 | @register_provider 装饰器 + LLMType 枚举,import 时自注册 |
| 抽象层设计 | BaseLLM ABC 统一 aask/acompletion,子类实现 _achat_completion |
| Provider 数量 | 13 个实现类覆盖 27 个 LLMType,OpenAILLM 一类注册 11 型 |
| 配置模型 | LLMConfig Pydantic 统一字段 + ModelsConfig 多模型字典 |
| 模型切换粒度 | 三级覆盖:全局默认 → Role 级 → Action.llm_name_or_type |
| 成本追踪 | CostManager 子类化:标准/Token-only/Fireworks 分级计费 |
| 流式适配 | 各 Provider 独立实现 _achat_completion_stream,处理不同 SSE 协议 |
最佳实践
1.注册表模式解耦 Provider 实现
2.一对多注册:OpenAI 兼容 API 共享单一实现类
3.三级配置覆盖链:全局→Role→Action 逐层可覆盖
4.CostManager 子类化适配不同计费模型