tools)后,模型默认自行判断本轮是否需要调用工具。tool_choice 参数让你显式控制这个行为:强制调用、完全禁止,或保持默认。
强制模型调用工具:"required"
当工作流必须走工具链路时使用——例如强制检索、强制查询数据库,不允许模型凭记忆直接作答:
"required" 强制模型调用 search_tools,检索完成后恢复 "auto",详见 Kimi K3 API 工具调用最佳实践。
禁止工具调用:"none"
当请求只需要纯文本回复、不希望模型误触发工具时使用:
tool_calls,同时降低延迟与 token 消耗。
让模型自行决定:"auto"(默认)
不传入 tool_choice 时即为 "auto":模型根据上下文自行决定是否调用工具,适合常规对话。
强制调用指定工具:传入函数对象
除了三个枚举值,tool_choice 还可以传入一个函数对象,强制模型调用指定工具:
指定函数调用当前与思考开启不兼容:思考开启时传入会返回 400 错误(
tool_choice 'specified' is incompatible with thinking enabled)。完整请求示例
以下示例声明了一个天气查询工具,并用tool_choice: "required" 强制模型调用它:
- curl
- python
注意事项
tool_choice是请求级参数,每次请求独立生效,只对本次生成的工具选择行为产生约束;- 是否设置
tool_choice不会破坏前缀缓存,可以放心按请求粒度调整该参数。
相关阅读
- Kimi K3 API 工具调用最佳实践:动态加载、tool_choice 与思考力度的组合实践
- 动态加载工具:工具数量较多时按需注入工具定义,降低 token 消耗、提升选择准确率
- 使用 Kimi API 完成工具调用:工具调用的完整流程与示例
- 模型参数参考:各模型对
tool_choice参数的支持差异