DeepAgents 人工介入实战|LangGraph 实现 Agent 高危工具人工审批
📅 2026/6/25 13:32:29
👁️ 次浏览
为什么 Agent 需要人工介入Agent 最大的价值是可以根据用户目标自主规划并调用工具。但并不是所有工具都适合完全自动执行。比如删除数据库表删除文件发起转账修改线上配置调用外部系统执行不可逆操作这些动作一旦执行错误影响可能非常大。所以比较合理的模式是普通查询类动作可以让 Agent 自动执行高风险动作必须先进入人工审批。在本文示例中我们定义了三个工具query_table_data查询表数据低风险可以自动执行delete_table删除数据表高风险需要人工审批delete_file删除文件高风险需要人工审批用户输入的任务是先查询product表的数据再删除user表最后删除lucaju.txt文件Agent 会先分析任务并尝试依次调用工具。但当执行到删除表、删除文件这类高风险动作时会被框架中断等待人工确认。二、初始化大模型首先初始化模型import os from langchain.chat_models import init_chat_model llm init_chat_model( modelkimi-k2.5, model_provideropenai, api_keyos.getenv(AliQwen_API), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, model_kwargs{reasoning_effort: none}, )这里使用的是 OpenAI 兼容模式所以model_provider设置为openai同时把base_url指向阿里云 DashScope 的兼容接口。需要提前配置环境变量export AliQwen_API你的 API Keymodel_kwargs{reasoning_effort: none}是模型调用参数可以根据实际模型支持情况调整。三、定义工具示例中定义了三个工具from langchain.tools import tool tool def delete_table(table_name: str) - str: 删除指定的表 return f删除表{table_name} tool def delete_file(file_name: str) - str: 删除指定的文件 return f删除文件{file_name} tool def query_table_data(table_name: str) - str: 查询指定表的数据 return f查询表{table_name}的数据这里为了演示效果工具内部只是返回字符串并没有真的连接数据库或删除文件。在真实项目中delete_table可能会执行 SQLdelete_file可能会操作对象存储或服务器文件系统。这类工具就非常适合加人工审批。四、为什么必须配置 CheckpointerHuman-in-the-loop 的核心不是简单地打印一句“是否确认”而是让 Agent 的执行流程真正暂停下来并且后续可以从暂停点继续执行。这就需要保存执行状态。示例代码中使用了 LangGraph 提供的内存检查点from langgraph.checkpoint.memory import InMemorySaver checkpointer InMemorySaver() config { configurable: { thread_id: 123 } }这里有两个关键点checkpointer用来保存 Agent 的执行状态。thread_id用来标识当前会话。当 Agent 执行到需要人工介入的节点时LangGraph 会把当前状态保存下来。等人工审批完成后再通过同一个thread_id找回之前的状态并继续执行。如果没有检查点框架就不知道应该从哪里恢复执行。五、创建支持人工介入的 DeepAgent接下来创建 Agentfrom deepagents import create_deep_agent main_agent create_deep_agent( modelllm, name主智能体, system_prompt回答使用中文调用对应的工具实现对应的功能, tools[delete_table, delete_file, query_table_data], interrupt_on{delete_table: True, delete_file: True}, checkpointercheckpointer )这里最关键的是两个参数interrupt_on{delete_table: True, delete_file: True}以及checkpointercheckpointerinterrupt_on用来声明哪些工具调用需要中断。在这个例子中调用query_table_data不会中断调用delete_table会中断调用delete_file会中断也就是说Agent 可以自动查询数据但不能自动删除表或文件。这就是人工介入的核心配置。六、第一次执行触发中断第一次执行 Agentresult_1 main_agent.invoke( { messages: [ { role: user, content: 先查询product表的数据再删除user表最后删除lucaju.txt文件, } ] }, configconfig, )这次调用并不一定会完整执行完所有工具。如果执行链路中包含需要人工审批的工具Agent 会暂停并把中断信息放到返回结果的__interrupt__字段中。示例代码中这样获取interrupt result_1[__interrupt__]当interrupt不为空时说明当前执行过程中存在需要人工介入的动作。七、查看待审批动作
1. 项目概述:为什么“遗传算法第二讲”比第一讲更值得你花时间重读“遗传算法”这四个字,十年前在高校课堂里是《人工智能导论》最后一章的冷门配角,五年后成了算法岗面试必问的“经典老题”,而今天——它已经悄悄长进了工业级推荐…
📅 2026/6/25 13:32:29
1. 项目概述:一个临床AI代理为何“不听话”地绕过工具链?我最近花了六周时间,从零搭建了一个面向基层诊所场景的临床AI代理系统——目标很实在:帮全科医生在接诊高血压、2型糖尿病、轻度焦虑这三类常见慢病患者时,自动…
📅 2026/6/25 13:27:29
1. 项目概述与核心价值在嵌入式系统设计的日常工作中,我们常常会面对一个看似基础却至关重要的环节:如何为微控制器(MCU)搭建一个稳定、可靠的“家”。这个“家”不仅包括物理上的引脚连接,更涵盖了如何让MCU在需要时全…
📅 2026/6/25 13:27:29
如何告别网盘限速:这款开源工具的完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / …
📅 2026/6/25 21:00:27
第一章:行业痛点与五强格局第二章:技术路线对决——迁移学习 vs 传统数据采集第三章:落地能力——AI过滤系统与工程化水平第四章:ROI量化分析——织机、验布台、全链条价值数据第五章:选型决策指南——五维评分框架与权…
📅 2026/6/25 21:00:27
解密Wallpaper Engine创意工坊下载器:Flutter技术栈下的高效壁纸管理方案 【免费下载链接】Wallpaper_Engine 一个便捷的创意工坊下载器 项目地址: https://gitcode.com/gh_mirrors/wa/Wallpaper_Engine
Wallpaper Engine创意工坊下载器是一款基于Flutter框架…
📅 2026/6/25 21:00:27
LangFlow深度解析:构建企业级AI工作流的可视化开发平台 【免费下载链接】langflow Langflow is a powerful tool for building and deploying AI-powered agents and workflows. 项目地址: https://gitcode.com/GitHub_Trending/la/langflow
LangFlow是一个功…
📅 2026/6/25 21:00:27
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPTAI PPT制作 - Okbiye智能写作https://www.okbiye.com/ppt 引言:答辩季的 PPT 困局,无数毕业生的共同难题
当毕业论文完成初稿修改、查重降重与格式排版之后,绝大多数…
📅 2026/6/25 21:00:27
5分钟掌握NewTab Redirect:彻底告别Chrome无聊新标签页! 【免费下载链接】NewTab-Redirect NewTab Redirect! is an extension for Google Chrome which allows the user to replace the page displayed when creating a new tab. 项目地址: https://g…
📅 2026/6/25 20:55:26
MONKEYCODE 教程系列 MonkeyCode教程及推广系列
MC-037 自定义 Skill 开发:创建你的AI能力模块
>官网链接注册更放心哦https://monkeycode-ai.com/?ic019e0aed-c823-783c-b08a-4f030f891e4e
系列: 不爱土豆唯爱马铃薯 MonkeyCode 教程系列
字数: 约 1400 字…
📅 2026/6/25 11:52:02
过度设计的代价:从 Maven 版本幻觉到工程上的简单原则
前段时间,我在梳理内部组件库的版本管理方式。
一开始,我想解决的问题很直接:组件越来越多,每个模块又有自己的版本号,能不能把这些版本统一管理起来…
📅 2026/6/25 11:52:02
1. 项目概述与I2C总线核心价值 如果你正在用LPC2101这类老牌ARM7芯片做项目,大概率绕不开I2C总线。传感器、EEPROM、RTC时钟芯片,这些外设十有八九都靠这两根线(SDA和SCL)跟你对话。手册里那些密密麻麻的状态码和流程图࿰…
📅 2026/6/25 11:57:03
1. 从手册到实战:SLIDER与SPINBOX控件的深度解析在嵌入式GUI开发里摸爬滚打十几年,我见过太多项目因为界面交互的“小问题”而卡壳。参数调节不跟手、数值输入效率低下,这些看似不起眼的细节,往往是决定产品用户体验成败的关键。e…
📅 2026/6/25 16:52:10
暗黑2重获新生:D2DX如何让经典游戏在现代Windows系统上流畅运行 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx
…
📅 2026/6/25 16:52:10
CompressO终极指南:免费开源的视频图像压缩神器 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compressO
你…
📅 2026/6/25 7:05:00