mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
9c2add9a09
问题:OpenAI 兼容 Provider(如 MiniMax)在发送 reasoning_content 流时,
每个 chunk 包含 "tool_calls": [] 空数组,导致每个字符被当作独立 block 处理
根因:streaming.rs:343 的 if let Some(tool_calls) 匹配空数组进入处理分支,
发送 content_block_stop 并重置 current_non_tool_block_type 为 None
修改:在 tool_calls 处理前添加 if !tool_calls.is_empty() 判断
示例输入:
```jsonl
{"delta": {"content": null, "reasoning_content": "用户", "role": "assistant", "tool_calls": []}}
{"delta": {"content": null, "reasoning_content": "用", "role": "assistant", "tool_calls": []}}
{"delta": {"content": null, "reasoning_content": "中文", "role": "assistant", "tool_calls": []}}
...
```
示例错误输出:
```text
event: content_block_start → index 0, type thinking
event: content_block_delta → thinking "用户"
event: content_block_stop → index 0
event: content_block_start → index 1, type thinking
event: content_block_delta → thinking "用"
event: content_block_stop → index 1
event: content_block_start → index 2, type thinking
event: content_block_delta → thinking "中文"
event: content_block_stop → index 2
...
```
Co-authored-by: WangQiang <wangqiang75@huawei.com>