Appearance
Kimi/SGLang 流式 tool-call arguments 格式异常导致工具调用分发失败
问题
使用自托管 Kimi 模型配合 SGLang 端点(openai-completions 传输层)时,流式传输的 tool-call arguments 可能以不规范的 shape 到达,导致工具调用分发失败。
根本原因:shouldRepairMalformedAnthropicToolCallArguments 函数只对 kimi provider 开启修复,对 SGLang 等 openai-compatible 端点未覆盖。
解决方案
社区提交的修复方案(PR 待合并):
将函数扩展为 shouldRepairMalformedToolCallArguments,对 modelApi 为 openai-completions 且包含 Kimi/SGLang 等 provider 时均启用修复:
diff
- export function shouldRepairMalformedAnthropicToolCallArguments(provider?: string): boolean {
- return normalizeProviderId(provider ?? "") === "kimi";
+ export function shouldRepairMalformedToolCallArguments(params: {
+ provider?: string;
+ modelApi?: string | null;
+ }): boolean {
+ const provider = normalizeProviderId(params.provider ?? "");
+ if (provider === "kimi") {
+ return true;
+ }
+ // 对 openai-completions 传输层(SGLang 等)也启用修复
+ if (params.modelApi === "openai-completions") {
+ return true;
+ }
+ return false;
+ }临时缓解措施:
在等待官方修复期间,可将模型路由从自托管 SGLang 切换到标准 OpenAI 兼容端点,或通过 openrouter 等代理层过滤格式问题。