1.9 KiB
1.9 KiB
Spec: model-adapters
ADDED Requirements
Requirement: 统一模型适配器抽象
系统 SHALL 定义抽象基类 ModelAdapter,统一 chat(prompt, params) 接口,返回结构固定为:审查文本 + token 用量 + 耗时。
Scenario: 统一返回结构
- WHEN 任一适配器完成一次调用
- THEN 返回结构包含审查文本、token 用量与耗时三个字段
Requirement: 三厂商 OpenAI 兼容适配器
系统 SHALL 实现 DeepSeek、Kimi、通义千问三个适配器,三者 MUST 统一按 OpenAI 兼容格式对接(统一 base_url + api_key + model 调用约定,可基于 OpenAI SDK),厂商差异只允许体现在配置项上,MUST NOT 为某厂商单独发明调用协议。
Scenario: 真实 API 调用
- WHEN 配置好任一厂商的 base_url 与 api_key 后发起调用
- THEN 该适配器以 OpenAI 兼容格式完成一次真实调用并返回统一结构
Requirement: 工厂模式创建模型实例
系统 SHALL 通过工厂按配置创建模型实例,上层只传模型标识即可运行时切换。
Scenario: 运行时切换模型
- WHEN 上层以不同模型标识请求模型实例
- THEN 工厂返回对应厂商的适配器实例,上层代码无需改动
Requirement: 并发控制与指数退避重试
适配层 SHALL 内置基于信号量的并发控制器与指数退避重试器,限流与网络抖动对上层透明。
Scenario: 限流自动重试
- WHEN API 返回限流或超时错误
- THEN 适配器自动按指数退避重试,超过阈值后向上报告失败
Requirement: 密钥管理
系统 MUST NOT 在代码中硬编码任何 API Key;密钥一律走环境变量或 .env,不入库、不进 Git、不进前端 bundle。
Scenario: 密钥来源检查
- WHEN 检查仓库代码与前端构建产物
- THEN 不存在任何硬编码密钥,密钥仅从环境变量或
.env读取