Yufeng He
e286da75c4
fix: 截断器丢失唯一 user 消息导致智谱等 provider 返回 400 (#6581)
* fix: 截断器丢失唯一 user 消息导致 API 400
修复 #6196
当对话只有一条 user 消息(长 tool chain 场景:system → user → assistant
→ tool → assistant → tool → ...),三个截断方法都会把这条 user 消息丢掉,
导致智谱、Gemini 等要求 user 消息的 provider 返回 400。
改动:
- 提取 `_split_system_rest()` 去掉三个方法里重复的 system/non-system 拆分
- 新增 `_ensure_user_message()`:截断后如果没有 user 了,从原始消息里补回
第一条 user,避免违反 API 格式要求
- 删掉 `truncate_by_dropping_oldest_turns` 里把没有 user 就清空全部消息的逻辑
- 5 个新测试覆盖单 user + 长 tool chain 场景,3 个旧测试更新断言
* style: format code
---------
Co-authored-by: Yufeng He <40085740+universeplayer@users.noreply.github.com>
Co-authored-by: RC-CHN <1051989940@qq.com>
2026-03-20 10:06:20 +08:00
..
2026-03-20 10:06:20 +08:00
2026-03-05 11:20:28 +08:00
2026-03-17 18:05:58 +08:00
2026-03-17 15:42:15 +08:00
2026-02-23 23:35:15 +08:00
2026-03-01 00:06:04 +08:00
2026-03-01 20:46:35 +09:00
2026-03-14 23:41:28 +08:00
2026-02-19 01:26:04 +08:00
2026-02-13 03:20:51 +08:00
2026-03-17 15:42:15 +08:00
2025-12-12 23:15:11 +08:00
2026-03-11 23:58:28 +09:00
2026-03-02 09:37:06 +08:00
2026-02-11 17:14:47 +08:00
2026-02-11 17:14:47 +08:00
2026-03-15 22:51:52 +08:00
2026-03-12 11:50:29 +09:00
2026-03-19 00:07:03 +09:00
2026-03-12 11:50:29 +09:00
2026-02-21 01:03:58 +08:00
2026-02-12 23:42:29 +09:00
2026-03-07 21:42:56 +09:00
2025-11-03 02:43:00 +08:00
2026-03-05 22:47:20 +08:00
2026-03-17 13:53:16 +08:00
2026-03-01 00:06:04 +08:00
2026-02-12 01:04:48 +08:00
2026-03-01 00:06:04 +08:00