Agent 工具调用失败时,如何用严格 schema、工具护栏与人工审批设计校验和异常处理?
工具调用要把模型建议视为不可信输入,通过严格 schema、授权、幂等、超时和人工审批形成安全执行边界。
直接结论
Agent 调工具时,模型输出不是已经授权且正确的命令。工具定义应使用尽可能严格的 JSON Schema,服务端再次验证类型、枚举、范围和业务规则;每次调用还要做身份与资源级授权。只读查询和有副作用操作分开,支付、删除、发送或发布等高影响动作在执行前展示规范化参数并要求人工批准。运行时设置超时、重试上限、幂等键和审计记录,失败返回结构化可恢复信息,而不是把内部堆栈直接喂给模型。
原理与步骤
schema 解决语法与部分语义约束,不能证明调用意图正确。工具层应采取最小权限,按会话绑定用户身份,拒绝模型自行提供的权限声明。可重试错误与永久错误使用稳定错误码区分;重试采用退避和预算,并为写操作提供幂等键或两阶段确认,防止超时后重复执行。护栏可在输入、工具调用和输出阶段检查,但确定性的授权与数据完整性必须在服务端完成,不能只依赖另一个模型判断。
工程场景
邮件 Agent 可先调用只读草稿工具生成收件人、主题和正文预览,用户确认后才调用发送工具;发送接口以草稿版本和幂等键防止双发。数据库助手只开放参数化的受限查询,不接受任意 SQL;导出敏感数据要求额外审批并记录审计主体。若第三方 API 超时,系统先查询幂等状态再决定重试,超过预算则返回“状态待确认”并转人工,而不是让模型无限循环调用。
验证与边界
严格 schema 不会阻止合法格式中的恶意或错误值,人工审批也可能因信息展示不完整而失效,所以审批界面要呈现真实目标、影响范围和差异。工具结果仍可能包含提示注入内容,必须作为数据隔离,不能自动变成系统指令。验证应覆盖畸形参数、越权资源、重复请求、超时后成功、部分失败、审批过期和用户撤销,并证明所有写操作可追踪到用户与最终参数。
答题练习
- 1模型参数必须服务端复验
- 2高影响动作执行前审批
- 3写操作使用幂等与审计
常见错误
- 把 strict schema 当成授权
- 超时后直接重试造成重复副作用
可能追问
- 如何设计可恢复错误协议
- 审批界面应展示哪些影响信息
来源记录
- 原始来源
- OpenAI Developers
- 来源页面
- Agent guardrails and approvals
- 最近收录
- 2026-07-14
- 官方复核
- OpenAI Developers