2.7 KiB
2.7 KiB
MODIFIED Requirements
Requirement: 模型详情路径识别
Anthropic 适配器 SHALL 正确识别包含统一模型 ID 的模型详情路径。
Scenario: 含斜杠的统一模型 ID 路径
- WHEN 路径为
/v1/models/anthropic/claude-3-opus - THEN
DetectInterfaceTypeSHALL 返回InterfaceTypeModelInfo
Scenario: 含多段斜杠的统一模型 ID 路径
- WHEN 路径为
/v1/models/azure/deployments/gpt-4 - THEN
DetectInterfaceTypeSHALL 返回InterfaceTypeModelInfo
Scenario: 模型列表路径不受影响
- WHEN 路径为
/v1/models - THEN
DetectInterfaceTypeSHALL 返回InterfaceTypeModels
Requirement: 提取统一模型 ID
Anthropic 适配器 SHALL 从路径中提取统一模型 ID。
Scenario: 标准路径提取
- WHEN 调用
ExtractUnifiedModelID("/v1/models/anthropic/claude-3-opus") - THEN SHALL 返回
"anthropic/claude-3-opus"
Scenario: 复杂路径提取
- WHEN 调用
ExtractUnifiedModelID("/v1/models/azure/accounts/org/models/gpt-4") - THEN SHALL 返回
"azure/accounts/org/models/gpt-4"
Scenario: 非模型详情路径
- WHEN 调用
ExtractUnifiedModelID("/v1/models") - THEN SHALL 返回错误
Requirement: 从请求体提取 model
Anthropic 适配器 SHALL 按 InterfaceType 从请求体中提取 model 值。
Scenario: Chat 请求提取 model
- WHEN 调用
ExtractModelName(body, InterfaceTypeChat),body 为{"model":"anthropic/claude-3-opus","messages":[...]} - THEN SHALL 返回
"anthropic/claude-3-opus"
Scenario: 无 model 字段
- WHEN 调用
ExtractModelName(body, ifaceType),body 中不含 model 字段 - THEN SHALL 返回空字符串,不返回错误
Requirement: 最小化改写请求体 model 字段
Anthropic 适配器 SHALL 按 InterfaceType 用 json.RawMessage 最小化改写请求体中的 model 字段,其余字段保持原始 bytes。
Scenario: 请求体 model 改写(统一 ID → 上游名)
- WHEN 调用
RewriteRequestModelName(body, "claude-3-opus-20240229", InterfaceTypeChat) - THEN SHALL 将请求体中 model 字段替换为
"claude-3-opus-20240229",其余字段原样保留
Requirement: 最小化改写响应体 model 字段
Anthropic 适配器 SHALL 按 InterfaceType 用 json.RawMessage 最小化改写响应体中的 model 字段,其余字段保持原始 bytes。请求体和响应体的 model 字段位置可能不同,各自独立实现。
Scenario: 响应体 model 改写(上游名 → 统一 ID)
- WHEN 调用
RewriteResponseModelName(body, "anthropic/claude-3-opus", InterfaceTypeChat) - THEN SHALL 将响应体中 model 字段替换为
"anthropic/claude-3-opus",其余字段原样保留