【免费下载链接】aiThe Laravel AI SDK provides a unified, expressive API for interacting with AI providers such as OpenAI, Anthropic, Gemini, and more.项目地址https://gitcode.com/gh_mirrors/ai89/ai点击查看免费下载在 Laravel AI 中Agent 可以像调用函数一样调用各种工具Tools——读文件、发请求、删数据。但如果某个操作有风险呢Laravel AI 内置了工具审批Approval机制Agent 在真正执行工具之前先暂停等待人类拍板你可以选择批准、拒绝甚至直接修改参数再放行。这套机制让你既享受 AI Agent 的自动化效率又牢牢掌握安全底线是生产环境上线 AI Agent 时不可或缺的刹车系统。为什么需要工具审批️想象一个能调用DeleteFile工具的客服 Agent。用户随口一句把配置清了AI 如果直接执行删除事故就发生了。工具审批把这种高风险操作拆成两步暂停PauseAgent 提出工具调用请求但不执行把请求内容工具名、参数、原因交给你的应用决策Decide人类或你的业务规则给出决定approve/reject/edit恢复ResumeAgent 从暂停点继续被批准的工具才会真正运行被拒绝的调用不会让对话卡死——SDK 会自动向历史里补一条该调用未被批准、未执行的结果记录保证会话可正常回放。相关逻辑位于 src/Gateway/Concerns/HandlesToolApprovals.php#L78-L131。一键开启声明哪些工具需要审批第一步实现 Approvable 接口工具类只需实现 Approvable 接口核心就三个方法方法作用requireApproval($reason)声明该工具必须审批可附一句原因withoutApproval()声明该工具无需审批shouldRequestApproval($request)按每次实际请求动态决定是否要审批第二步使用 InteractsWithApprovals 特性配套的 InteractsWithApprovals trait 已经写好全部实现你甚至可以用needsApproval(Request $request)按参数动态判断比如删除路径在/tmp下就免审否则需要审批。一个完整示例见测试夹具 ApprovableNumberGeneratorclass ApprovableNumberGenerator implements Approvable, Tool { use InteractsWithApprovals; protected function needsApproval(Request $request): Approval|bool { return true; // 每次都要求人工确认 } } 小技巧requireApproval(会删除生产数据)传入的原因reason会随暂停请求一起返回给前端方便审批人看懂风险。审批流程全景图暂停 → 决策 → 恢复阶段一Agent 暂停等待拍板当 Agent 调用到需要审批的工具时prompt()返回的AgentResponse不会继续往下跑而是携带待审批清单暂停下来。你可以通过三个信号识别它$response-hasPendingApprovals()返回true$response-pendingApprovals是一个 PendingApproval 集合每项包含id、工具名tool、参数arguments和reason系统同时触发 ToolApprovalRequested 事件事件里带有conversationId可直接推给审批人暂停时工具调用tool_use已被写入会话历史数据库表agent_conversation_messages的steps字段这是后续能断点续跑的关键。阶段二人类给出决策 DecisionSDK 提供了 Decision 类来表达三种动作Decision::approve() // 批准原样执行 Decision::reject(理由) // 拒绝并把理由作为结果告诉 AI Decision::edit([path /tmp/file]) // 修改参数后再批准决策以工具调用 ID 决策的映射形式打包成 Decisions 对象并且支持布尔简写和通配符Decisions::from([ toolu_1 true, // 简写批准 toolu_2 Decision::reject(太危险了), // 拒绝 * false, // 其余调用默认拒绝 ]);常用方法说明Decision::approveAll()/Decision::rejectAll()一键全批 / 全拒$decisions-approveRemaining()已明确决策的之外其余默认批准$decisions-rejectRemaining(现在不行)其余默认拒绝并附理由⚠️ 注意两条规则决策映射不能为空通配符*只能用于批准/拒绝不能用于edit无法替每个未知调用编参数。阶段三带着决策恢复 Agentprompt()、stream()等入口的第一个参数除了字符串提示词也接受一个Decisions对象见 Agent 接口。恢复的方式就是继续同一会话 提交决策$paused (new MyAgent)-forUser($user)-prompt(删除 config/app.php); if ($paused-hasPendingApprovals()) { // ... 人工审批通过后 ... $result (new MyAgent) -continue($paused-conversationId, $user) -prompt(Decisions::from([toolu_1 true])); }恢复后 Agent 会执行被批准的工具 → 把批准/拒绝结果回填进对话 → 继续调用模型完成剩余步骤。被拒绝的调用会以denied: true的结果告知模型模型可以据此换一种方式回答。进阶玩法流式审批与多通道恢复流式输出中的审批事件 使用stream()时审批请求会以ToolApprovalRequest流事件的形式推送类型为tool_approval_request负载包含完整的approvals清单见 src/Streaming/Events/ToolApprovalRequest.php#L24-L34。前端监听到该事件即可弹出审批按钮审批完再调stream(Decisions::...)恢复——用户全程无感、不断连。队列与广播同样支持恢复审批恢复不仅适用于同步调用。queue(Decisions)、broadcast(Decisions, $channel)等入口都能携带决策参数适用于审批邮件审批 → 后台队列恢复执行这类异步场景行为验证见 tests/Feature/ToolApprovalTest.php#L172-L200。会话归属与并发保护 恢复时若提交的工具调用 ID 与当前待审批清单对不上比如并发下重复提交、或会话已被推进SDK 会抛出ApprovalMismatchException并以 HTTP 409 返回当前最新待审批清单方便前端刷新tests/Feature/ToolApprovalTest.php#L24-L41实现了ResolvesPendingApprovals的会话存储可以按conversationId主动查询还差哪些审批src/Contracts/ResolvesPendingApprovals.php适合做审批中心页面恢复执行由continue($conversationId, $user)绑定会话归属配合forUser()可做权限校验快速上手清单 ✅给风险工具实现Approvable接口用requireApproval(原因)声明审批要求调用 Agent 后检查$response-hasPendingApprovals()把pendingApprovals展示给审批人审批人操作后构建Decisions::from([工具ID true/false/Decision::edit(...)])用-continue($conversationId, $user)-prompt($decisions)恢复 Agent监听ToolApprovalRequested/ToolApprovalResolved事件完善审计日志掌握以上五步你就在 Laravel AI 里搭好了一个人机协作的 Agent 审批闭环AI 负责想人负责拍板。相关核心代码都集中在 src/Approvals/ 目录配套的完整行为测试在 tests/Feature/ToolApprovalTest.php 和 tests/Feature/ToolApprovalResumeTest.php阅读它们是理解这套机制最快的路径。赞分享【免费下载链接】aiThe Laravel AI SDK provides a unified, expressive API for interacting with AI providers such as OpenAI, Anthropic, Gemini, and more.项目地址https://gitcode.com/gh_mirrors/ai89/ai点击查看免费下载相关推荐n8n 人工审核HITL机制实战指南为 Agent 工具加上人类审批闸门n8n 人工审核HITL机制实战指南为 Agent 工具加上人类审批闸门 n8n AI Agent 的工具有着真实、可见的副作用——发消息、退款、改账号、AI 技能AI 插件工作流自动化流程编排Comp AI CRM 中的 AI 工具审批实战AI Elements Confirmation 组件与 AI SDK 工具审批工作流详解Comp AI CRM 中的 AI 工具审批实战AI Elements Confirmation 组件与 AI SDK 工具审批工作流详解 本篇文章以 Com企业应用后端前端AI 应用AI Agent人工智能Rivet Agents Human-in-the-Loop 实战让危险操作先经人工审批再执行的完整指南Rivet Agents Human in the Loop 实战让危险操作先经人工审批再执行的完整指南 Rivet Agents 提供了 Human in创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考