Agent 调用工具时,除了选对动作,还要按接口约定写出工具名、参数类型和必填字段。Ubicloud 在 Kimi K2.6、vLLM 0.28 的部署中测得约92%的工具调用符合 schema,也就是参数结构规范。一次格式错误会带来重试和错误消息,后续对话还可能继续受这些消息影响。
团队采用约束解码:在每一步生成前,根据当前所在的工具调用阶段和结构规范,屏蔽不合法的下一个 token。例如工具名只能从已声明工具中选择,整数参数不能直接写成任意字符串。实现依靠 XGrammar 的结构标签,将普通语言生成和受约束的调用部分区分开;它限制输出形状,不负责判断用户真正想做什么。
这个能力曾在版本升级后“失效”,符合结构的比例回落到约91%。作者排查后认为,并非约束算法坏了,而是上游改变了未明确启用约束时的默认行为。vLLM 面向很多模型,强制套用不匹配的语法可能损害生成;后来提供服务端严格程度选项,让运营者明确控制。
Ubicloud 在启用约束后,用 K2VV 的2,000条请求重新检查所服务的 Kimi、DeepSeek 版本,报告100%的结构合规率。这个数字限于其测试与配置,不是100%的工具选择正确率,更不是所有 JSON Schema 条件都已被所有解析器支持。文章发布于10月20日,本期由近期讨论重新发现。