跳转到内容

工具调用与参数

应用提供函数定义 → 模型返回 tool_calls → 应用校验并执行函数 → 应用回传 role: tool 的结果 → 模型继续生成。模型不会替你的服务端自动执行函数。

以下为 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\"}"}

如果只发送工具结果而缺失对应的助手消息,服务器可能拒绝请求。流式场景要等函数名和参数接收完整后再执行。

WorkBuddy、OpenCode 等工具的“工具调用”“图片输入”“思考模式”开关必须与模型真实能力匹配。普通文本能回复,不能证明工具或图片协议也可用。首次连接可先关闭可选能力,普通对话通过后逐项开启。

校验工具名称、参数类型与访问权限。支付、删除、发送消息等具有外部影响的操作应由你的应用实现确认与审计。不要把模型生成的字符串直接作为系统命令运行。

tool_calls 缺失:模型可能选择直接回答,或渠道不支持该参数。invalid tool message:检查调用 ID 与消息顺序。参数 JSON 不完整:确认没有在流式分片未结束时就解析。结构化输出、并行工具和内置搜索属于独立能力,不应一并默认开启。