fix: Anthropic 流式编码器补全 message_start/message_delta 必填字段
跨协议流式转换时,Anthropic 客户端 Zod 校验因 SSE 事件缺少必填字段报错。 由 Anthropic encoder 层(而非 OpenAI decoder 层)负责补全协议默认值,保持权责分离。 - encodeMessageStart 补全 type/content/stop_reason/stop_sequence,usage nil 时输出零值 - encodeMessageDelta usage nil 时输出零值 - 更新相关测试覆盖新增行为
This commit is contained in:
@@ -239,6 +239,26 @@ Decoder 几乎 1:1 映射,维护最小状态机:
|
||||
- **WHEN** delta.type == "thinking_delta"
|
||||
- **THEN** SHALL 编码为 Anthropic thinking_delta
|
||||
|
||||
#### Scenario: message_start 事件编码完整 message 字段
|
||||
|
||||
- **WHEN** 编码 MessageStartEvent
|
||||
- **THEN** SHALL 输出 `message` 对象包含以下字段:
|
||||
- `id`: 来自 event.Message.ID
|
||||
- `type`: 固定值 `"message"`
|
||||
- `role`: 固定值 `"assistant"`
|
||||
- `content`: 固定值 `[]`(空数组)
|
||||
- `model`: 来自 event.Message.Model
|
||||
- `stop_reason`: 固定值 `null`
|
||||
- `stop_sequence`: 固定值 `null`
|
||||
- `usage`: 来自 event.Message.Usage;若 Usage 为 nil,SHALL 输出 `{"input_tokens": 0, "output_tokens": 0}`
|
||||
|
||||
#### Scenario: message_delta 事件编码包含 usage 字段
|
||||
|
||||
- **WHEN** 编码 MessageDeltaEvent
|
||||
- **THEN** SHALL 输出 `usage` 字段
|
||||
- **WHEN** event.Usage 为 nil
|
||||
- **THEN** SHALL 输出 `{"output_tokens": 0}`
|
||||
|
||||
### Requirement: Anthropic 错误编码
|
||||
|
||||
系统 SHALL 实现 Anthropic 协议的错误编码。
|
||||
|
||||
Reference in New Issue
Block a user