65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
## MODIFIED Requirements
|
||
|
||
### Requirement: 验证 OpenAI 请求
|
||
|
||
系统 SHALL 验证 OpenAI ChatCompletionRequest,验证逻辑位于 ProtocolAdapter 的 decodeRequest 内。
|
||
|
||
#### Scenario: 必需字段验证
|
||
|
||
- **WHEN** OpenAI Adapter 的 decodeRequest 解析请求
|
||
- **THEN** SHALL 验证 model 字段不为空
|
||
- **THEN** SHALL 验证 messages 字段不为空且至少有一条消息
|
||
- **THEN** 验证失败 SHALL 返回 INVALID_INPUT 类型的 ConversionError
|
||
|
||
#### Scenario: 参数范围验证
|
||
|
||
- **WHEN** OpenAI Adapter 的 decodeRequest 解析参数
|
||
- **THEN** SHALL 验证 temperature 范围在 [0, 2]
|
||
- **THEN** SHALL 验证 max_tokens 大于 0
|
||
- **THEN** SHALL 验证 top_p 范围在 (0, 1]
|
||
|
||
#### Scenario: 消息内容验证
|
||
|
||
- **WHEN** 验证 messages 字段
|
||
- **THEN** SHALL 验证每条消息的 role 有效(system、developer、user、assistant、tool)
|
||
- **THEN** SHALL 验证 content 不为空
|
||
|
||
### Requirement: 验证 Anthropic 请求
|
||
|
||
系统 SHALL 验证 Anthropic MessagesRequest,验证逻辑位于 ProtocolAdapter 的 decodeRequest 内。
|
||
|
||
#### Scenario: 必需字段验证
|
||
|
||
- **WHEN** Anthropic Adapter 的 decodeRequest 解析请求
|
||
- **THEN** SHALL 验证 model 字段不为空
|
||
- **THEN** SHALL 验证 messages 字段不为空且至少有一条消息
|
||
- **THEN** SHALL 验证 max_tokens 大于 0(或使用默认值)
|
||
|
||
#### Scenario: 参数范围验证
|
||
|
||
- **WHEN** Anthropic Adapter 的 decodeRequest 解析参数
|
||
- **THEN** SHALL 验证 temperature 范围在 [0, 1]
|
||
- **THEN** SHALL 验证 top_p 范围在 (0, 1]
|
||
|
||
#### Scenario: 消息内容验证
|
||
|
||
- **WHEN** 验证 messages 字段
|
||
- **THEN** SHALL 验证每条消息的 role 有效(user、assistant)
|
||
- **THEN** SHALL 验证 content 数组不为空
|
||
|
||
### Requirement: 返回友好的验证错误
|
||
|
||
系统 SHALL 返回友好的验证错误响应。
|
||
|
||
#### Scenario: 转换错误格式
|
||
|
||
- **WHEN** decodeRequest 验证失败返回 ConversionError
|
||
- **THEN** ProxyHandler SHALL 使用 clientAdapter.encodeError 编码错误响应
|
||
- **THEN** 错误 SHALL 使用客户端协议的格式
|
||
|
||
#### Scenario: 多字段错误
|
||
|
||
- **WHEN** 多个字段验证失败
|
||
- **THEN** ConversionError.details SHALL 包含所有验证错误
|
||
- **THEN** 错误响应 SHALL 包含完整的验证错误信息
|