tool_calls 的过程中,模型可能会根据上下文连续发起多次工具调用。
如果你发现模型连续多次调用同一个 工具,并且每次调用使用的 function.name 与 function.arguments 完全相同,且工具返回结果没有带来新的有效信息,可以将其视为重复工具调用。
排查消息布局
在处理这类问题时,我们建议先排查消息布局是否正确:- 当 Kimi API 返回
finish_reason=tool_calls时,是否已将返回的choice.message原封不动地添加到messages列表; - 每个
tool_call是否都有一条对应的role=tool消息; role=tool消息中的tool_call_id是否与对应的tool_call.id完全一致;- 如果你使用流式输出
stream=True,是否已正确拼接分片返回的tool_calls,尤其是function.arguments字段。
业务侧重复调用检测
如果上述消息布局没有问题,但模型仍然重复调用同一个工具和同一组参数,可以在业务侧增加重复调用检测,并在下一轮请求的系统提示词 system prompt 中追加提醒。 当同一个工具和同一组参数连续重复 3 次时,可以追加:<system-reminder> 只是一个提示词示例,不是 Kimi API 的特殊字段。你可以将其中内容合并到下一轮请求的 role=system 消息中,也可以按照自己的消息管理方式写入系统提示词。为了避免误判,建议仅在”同一个工具、同一组参数、连续多次重复、工具结果没有新进展”同时成立时触发这类提示。