例子:查询订单 42
用户要求查询订单状态。模型可能返回下面的工具调用参数:
{"tool":"get_order","arguments":{"order_id":"42"}}这只是一个调用建议。应用应先核对工具名是否在允许列表里,再验证 order_id 是非空字符串,最后执行查询。查询成功后,把结果和本次调用标识关联,再交给模型生成回答。可以在故障实验页逐步查看正常路径。
失败情形一:参数不合法
如果模型给出 {"order_id":null},不要把它直接传给数据库,也不要编造“未找到订单”。应用应返回明确的校验错误,并让用户补充订单号。记录调用标识、校验错误代码和脱敏后的参数结构,排查时才能区分“模型没给足信息”和“数据库异常”。
失败情形二:工具超时
只读查询超时后,可以按有限次数、带间隔的策略重试;若是付款、发信、创建记录等有副作用的操作,先确认是否已有结果,并使用幂等键或业务去重机制。网络超时只说明应用没有及时拿到结果,不证明远端操作没有发生。
最小追踪记录
request_id: req_42
tool: get_order
call_id: call_42
validation: passed
execution: timeout
retry_count: 1
final_status: temporary_error这类记录可以保留流程与错误类型,但不应把真实订单内容或密钥写进可公开访问的日志。最终回答应承认“查询暂时失败”,而不是把故障包装成业务结论。
参考:OpenAI 工具调用流程说明。不同供应商 API 形态可能不同,但参数校验和副作用控制应由应用负责。