Tool Choice
工具选择策略auto / required / 指定特定工具——告诉模型这一轮怎么用工具。
详解
Tool Choice 是你在 API 请求里告诉模型「这轮该怎么用工具」的策略开关。主要有四种取值:auto(默认)让模型自己判断要不要调工具;required 强制模型必须调用至少一个工具,不允许它直接回答;指定具体工具名则强制只能调那一个;none 完全禁止调工具,强制模型只输出文本。这个参数在工程上很实用:当你需要保证模型一定走工具分支(如数据提取、格式化输出),用 required 或指定工具;当你需要调试纯文本回答时,用 none。不同厂商的 API 格式略有差异:OpenAI 用字符串 "required" 或对象 {"type": "function", "function": {"name": "..."}}, Anthropic 用 {"type": "tool", "name": "..."}。
一个类比
像给员工下指令的程度:auto 是「你自己判断要不要查资料」;required 是「必须去查,不许靠记忆回答」;指定工具是「只能查这本手册,别的都不行」;none 是「这次直接说你知道的,别去查了」。
举个例子
# Anthropic SDK 示例——强制模型必须调用工具
import anthropic
client = anthropic.Anthropic()
resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "提取文中的人名"}],
tools=tools,
tool_choice={"type": "any"} # 强制必须走工具,不能直接回答
)
# 若只允许调用特定工具:
# tool_choice={"type": "tool", "name": "extract_names"}
# OpenAI SDK 对比写法:
# tool_choice="required" 或 {"type": "function", "function": {"name": "extract_names"}}PYTHON 示例
相关概念
- → Function Calling· 函数调用