Skip to content

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 等代理层过滤格式问题。