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-01 20:46:35 +09:00
2026-03-18 09:34:48 +08:00
2026-03-19 19:06:53 +08:00
2026-03-14 20:52:00 +08:00
2026-03-17 12:56:34 +08:00
2026-02-26 09:59:37 +08:00
2026-03-14 18:18:14 +08:00
2026-03-19 17:14:42 +08:00
2026-03-19 17:14:42 +08:00
2026-03-19 19:04:24 +08:00
2026-03-17 15:12:02 +08:00
2026-03-17 23:23:59 +08:00
2026-03-12 23:57:45 +08:00
2026-03-19 00:07:03 +09:00
2026-03-11 14:21:55 +09:00
2025-12-16 10:09:57 +08:00
2026-02-09 00:22:24 +08:00
2026-02-28 21:23:44 +08:00
2026-03-02 14:16:14 +08:00
2026-03-15 21:46:01 +08:00
2026-03-17 15:42:15 +08:00
2026-02-09 00:22:24 +08:00
2026-03-01 16:10:35 +09:00
2026-03-01 00:23:47 +08:00
2026-03-01 00:23:47 +08:00
2025-11-14 19:17:24 +08:00
2026-02-09 00:22:24 +08:00
2026-02-09 00:22:24 +08:00
2026-03-03 12:58:59 +08:00
2026-02-28 13:34:12 +09:00
2026-03-17 15:42:15 +08:00
2026-02-09 00:22:24 +08:00
2026-02-28 13:34:12 +09:00
2026-03-17 15:42:15 +08:00
2026-03-16 12:34:21 +08:00
2026-03-03 12:58:59 +08:00
2026-02-09 00:22:24 +08:00