多供应商适配
Multi-Provider Adapter
通过接口抽象统一多个第三方服务供应商的调用与切换
子问题
1.供应商接口统一
2.配置驱动的动态选择
3.供应商特定错误处理
4.异步轮询供应商的状态机封装与超时控制
5.base64/binary/URL 三种返回格式的透明归一化
6.供应商别名与默认值降低用户配置负担
各项目的解法1 solutions
Signals
横向对比
| 维度 | md2wechat-skill |
|---|---|
| 接口设计 | Go interface 双方法(Name+Generate),context 传播超时 |
| 工厂模式 | switch-case 工厂函数,验证前置,支持供应商别名 |
| 错误处理 | GenerateError 统一类型含 Provider/Code/Hint,每供应商独立 handleError 映射 |
| 协议归一 | URL/base64/binary 三种返回格式归一为 GenerateResult.URL 字段 |
| 异步支持 | ModelScope 供应商内置 ticker 轮询 + context 取消,120s 超时 |
| 配置体系 | 三层优先级(环境变量>配置文件>默认值),YAML/JSON 双格式 |
最佳实践
1.Provider接口+工厂模式实现开闭原则
2.验证前置:工厂函数先 validate 配置再创建实例,快速失败
3.错误人性化:GenerateError 含 Hint 字段提供可操作的修复建议
4.三层配置优先级(环境变量>文件>默认值)统一所有供应商配置