工具调用与参数
工具调用的流程
Section titled “工具调用的流程”应用提供函数定义 → 模型返回 tool_calls → 应用校验并执行函数 → 应用回传 role: tool 的结果 → 模型继续生成。模型不会替你的服务端自动执行函数。
定义一个只读工具
Section titled “定义一个只读工具”以下为 Chat Completions 请求结构,需选用支持工具的文本模型:
{ "model":"gpt-5.6-sol", "messages":[{"role":"user","content":"查看订单 DEMO-001 的状态"}], "tools":[{ "type":"function", "function":{ "name":"get_order_status", "description":"读取订单状态", "parameters":{ "type":"object", "properties":{"order_id":{"type":"string"}}, "required":["order_id"] } } }], "tool_choice":"auto"}保留助手返回的完整工具调用消息,再添加具有同一 tool_call_id 的工具结果。下例的调用 ID 是占位符,应换成实际返回值:
{"role":"tool","tool_call_id":"实际返回的调用ID","content":"{\"status\":\"shipped\"}"}如果只发送工具结果而缺失对应的助手消息,服务器可能拒绝请求。流式场景要等函数名和参数接收完整后再执行。
客户端里的能力开关
Section titled “客户端里的能力开关”WorkBuddy、OpenCode 等工具的“工具调用”“图片输入”“思考模式”开关必须与模型真实能力匹配。普通文本能回复,不能证明工具或图片协议也可用。首次连接可先关闭可选能力,普通对话通过后逐项开启。
校验工具名称、参数类型与访问权限。支付、删除、发送消息等具有外部影响的操作应由你的应用实现确认与审计。不要把模型生成的字符串直接作为系统命令运行。
tool_calls 缺失:模型可能选择直接回答,或渠道不支持该参数。invalid tool message:检查调用 ID 与消息顺序。参数 JSON 不完整:确认没有在流式分片未结束时就解析。结构化输出、并行工具和内置搜索属于独立能力,不应一并默认开启。
