🧠 图解记忆:业务层依赖一个窄接口,例如 generate(request) - response,而不是直接依赖某家 SDK;点击图片可查看原图。
💡 答案要点
业务层依赖一个窄接口,例如 generate(request) -> response,而不是直接依赖某家 SDK。用 typing.Protocol 描述能力,通过构造函数注入真实客户端、Fake 或 Recording Client。
接口应保留超时、usage、finish reason、tool calls 和错误类型,不能为了“统一”丢掉关键语义。单元测试用确定性 Fake;契约测试验证各供应商适配器;少量集成测试再调用真实服务。
