AI 动手之前先让人拍板:Laravel AI 工具审批机制完整指南
【免费下载链接】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),仅供参考

相关新闻

64位ZBarSDK集成实战:从链接报错到稳定出码的完整路径

64位ZBarSDK集成实战:从链接报错到稳定出码的完整路径

简介:64位ZBarSDK是一套面向移动端与桌面端开发者的二维码扫描开发工具包,针对64位架构优化,可在iOS、Android及Windows平台集成使用,解决应用中二维码识别与数据接入的问题。压缩包共42个文件,约2.54MB,以…

2026/10/15 15:08:52 阅读更多 →
订单系统性能优化实战:从故障定位到架构升级

订单系统性能优化实战:从故障定位到架构升级

1. 事故背景与问题定位那天凌晨2点17分,我被一连串急促的报警短信惊醒。生产环境的核心订单服务响应时间从平时的200ms飙升到8秒以上,错误率突破30%。打开监控大盘时,整个服务集群的CPU利用率曲线像悬崖般陡峭上升,部分节点已经触…

2026/10/15 15:07:52 阅读更多 →
JVM和JMM高频面试题:底层原理与并发机制全解析

JVM和JMM高频面试题:底层原理与并发机制全解析

正值金三银四面试季,不少朋友跟我反馈,Java面试被问“跟我讲下JVM和JMM”时,第一反应是脑内循环“JVM是虚拟机,JMM是内存模型”,然后……就没有然后了。这道题其实是个典型的高频入口题,面试官既可以考察你…

2026/10/15 15:07:52 阅读更多 →

最新新闻

Mouzi完全评测:免费离线、隐私优先,这个自动文件整理工具如何治服你的下载文件夹

Mouzi完全评测:免费离线、隐私优先,这个自动文件整理工具如何治服你的下载文件夹

【免费下载链接】mouzi A free, privacy-first automatic file organizer that quietly sorts your Downloads folder from the system tray. 项目地址: https://gitcode.com/gh_mirrors/mo/mouzi 点击查看 免费下载 Mouzi 是一款免费、开源、100% 离线的自动文件整…

2026/10/15 15:50:05 阅读更多 →
理解MatConvNet三大指标:objective、top1error与top5error

理解MatConvNet三大指标:objective、top1error与top5error

刚接触MatConvNet的人,大概率都会对着训练日志发呆。屏幕上一行行滚过去,objective: 0.5324、top1err: 0.2311、top5err: 0.0712,看着眼熟,但真要问一句“这几个数到底谁影响谁”,一时半会儿还真说不利索。我当时也一样…

2026/10/15 15:50:05 阅读更多 →
DiffusionNFT评估实战:用evaluation.py加载LoRA跑GenEval/OCR基准测试(完整指南)

DiffusionNFT评估实战:用evaluation.py加载LoRA跑GenEval/OCR基准测试(完整指南)

【免费下载链接】DiffusionNFT [ICLR 2026 Oral] DiffusionNFT: Online Diffusion Reinforcement with Forward Process 项目地址: https://gitcode.com/gh_mirrors/di/DiffusionNFT 点击查看 免费下载 DiffusionNFT 是 ICLR 2026 Oral 论文「Online Diffusion Rei…

2026/10/15 15:50:05 阅读更多 →
从 Prompt 到 Loop 三级跳:Loop Engineering 橙皮书图解 AI 工程四层栈

从 Prompt 到 Loop 三级跳:Loop Engineering 橙皮书图解 AI 工程四层栈

文档教程AI Agent人工智能 【免费下载链接】loop-engineering-orange-book 别再问我什么是 Loop Engineering — 橙皮书系列。A plain-language guide to loop engineering (中文 English PDF). Free. 项目地址: https://gitcode.com/gh_mirrors/lo/loop-engineeri…

2026/10/15 15:50:05 阅读更多 →
AIRI DevLog 实战解析:把 yui540 的 CSS 动画移植成可复用的 Vue 页面转场组件

AIRI DevLog 实战解析:把 yui540 的 CSS 动画移植成可复用的 Vue 页面转场组件

人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手 【免费下载链接】airi 💖🧸 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器,目标是接近 Neuro-sama 的高度;支持实时语音聊天、Minecraft 和 F…

2026/10/15 15:50:05 阅读更多 →
PID算法实战指南:从仿真调参到硬件部署避坑

PID算法实战指南:从仿真调参到硬件部署避坑

简介:本资源是一套面向嵌入式开发初学者与单片机工程师的PID控制算法实战代码库,聚焦STM32平台闭环控制场景,解决电机调速、温控系统、姿态稳定等典型应用中控制器设计与移植难题。压缩包共394个文件,以99个C源文件和102个头文件&…

2026/10/15 15:49:04 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →