AIAI 学习 · 专题库

评测与工程

让工具调用真正完成业务动作

把模型提案、权限校验、幂等执行和结果对账串成闭环。

资料复核:2026-09-082 份直接来源含操作步骤与记录模板
先做什么

模型返回工具调用只是提出动作。真正完成任务,需要服务端验证权限和业务前置条件,执行并持久记录结果,然后让回复与最终状态一致。

理解这条链路

模型提案全量参数与权限校验幂等执行持久回执超时对账用户确认结果
参考流程:根据公开能力整理的操作顺序;分支、重试和回退以正文说明为准,不代表厂商内部实现。

检查整份调用计划

逐项校验工具名称、所有参数、依赖顺序和禁止动作。第一条是查询、第二条是未授权取消时,不能因第一条正确就判成功。用户身份、订单归属和额度应从可信系统注入,而不是信任模型传来的字段。

超时进入 UNKNOWN

网络断开时,服务端操作可能已经完成。使用业务级 operation_id/幂等键查询原操作结果,再决定重试或补偿。补偿也需要状态与审计;把 HTTP 200、函数返回和业务已完成分成不同事件。

按这个顺序操作

  1. 选一个带副作用的操作,写清前置条件、最终状态与禁止重复的效果。
  2. 验证完整调用数组和业务权限,拒绝未知字段与未授权操作。
  3. 在已执行但回执丢失处注入超时,确认重试不造成第二次扣款或取消。
  4. 重新查询最终状态后组织回复,无法确认时明确保持未确认。
配套本地工具

以下工具位于 AI 学习工作区。先阅读对应说明,确认所需数据与依赖;本轮未重新运行这些实验。

  • tool-transaction-bench/README.md

可直接复用的记录模板

operation_id:稳定业务幂等键
actor / tenant / target:由可信上下文确定
expected_state_before:
status:PROPOSED / VALIDATED / COMMITTED / UNKNOWN / FAILED
result_receipt:
reconcile_after_timeout:先查原操作,再决定是否重试
response_claim:只能使用已确认的最终状态

做到什么程度才算通过

  • 每条调用都被检查。
  • 越权参数无法覆盖可信身份。
  • 回执丢失不会重复产生副作用。
  • 用户听到的结果与业务状态一致。
当前证据的限制

本轮未调用外部业务工具;本地基准为确定性控制实验,不能用来排名真实模型。

本轮确认的事实与来源

以下为公开资料支持的具体结论;操作流程和验收建议属于工程推导。仓库说明或厂商效果表述不等于独立实测。

[1] OpenAI · Function calling

OpenAI Function calling 文档说明 strict 模式要求对象设置 additionalProperties:false,并将 properties 中字段设为 required;可用 null 表达可选值。Schema 约束不负责业务权限和最终状态。

资料日期:页面未统一标注;以复核日期为准 · 复核:2026-09-08

阅读原始来源 ↗
[2] IETF RFC 9110 · HTTP Semantics

RFC 9110 将幂等定义为重复相同请求与单次请求具有相同的预期服务端效果,并反对在不知语义安全时自动重试非幂等请求。

资料日期:2022-06 · 复核:2026-09-08

阅读原始来源 ↗

这次更新了什么

合并 Function Call 厂商比较与事务专题;撤下异步工具调用“第一名”式排名,保留可执行的控制要求。

合并前的内容入口

以下旧地址仍可访问,并会带你来到本篇。完整重构前材料已留存本地备份。

  • research-hub/tool-transaction-consistency.html
  • ai-nav/function-call-compare.html

接着解决下一个问题