Fix #43037 Gemma4 Tool Parser Multiple Tool Calls in Single Delta
问题
vLLM前端的token读取基于buffer机制,且buffer长度无限制。这意味着单个buffer可能包含一个或多个function call。
然而,当前多数parser采用状态机模式进行匹配,只能处理buffer中的单个function call。
修复方案
结合正则表达式与状态机:
- 使用正则表达式匹配buffer中的多个function call
- 通过状态机处理每个call的解析逻辑
思考
问题普遍性
- 多数模型的parser仅实现单个function call处理
- 类似问题可能在其他模型中同样存在
AI辅助修复
- 在AI协助下,修复过程更简单、安全
架构选择
- 通用架构 vs 手写parser:各有优劣
- 当前场景下,手写parser更具灵活性
触发条件
该问题出现的前提:
- 网络通信请求间隔时间较长
- GPU推理速度较快