LangGraph工具调用别裸奔:一条从分类到审计的治理流水线
你在一个类似AI安全运维系统里问了下面一句给我封禁这个IP: xx.xx.xx.xx如果这还只是一个demo系统Agent可能很快按照一段漂亮流程执行识别用户意图 ↓ 选择block_ip工具 ↓ 执行封禁 ↓ 回复用户已处理看起来智能但若是一个真实的接入了生产的AI安全运维系统这个搞法有点吓人了。封禁IP这类敏感的写操作不是查天气也不是总结一段文本而是一个有副作用的动作它可能会改变外部系统状态可能影响真实用户、真实服务、真实业务。。所以在Agent调用block_ip之前最好还要想好下面这些地方都咋处理1、它凭什么能调用block_ip2、谁批的3、失败了怎么办4、事后怎么查证据链5、等问题不在block_ip而在少了中间关卡【识别用户意图》选择block_ip工具》执行封禁》回复用户已处理】这条流程最大的问题是模型刚说“我觉得应该封这个IP” 系统马上就真的去封了。这中间少了一步确认这个请求真的是封禁请求吗 block_ip这个工具适合当前请求吗 这个动作不需要人批准吗模型最多只能提出建议觉得这里应该调用block_ip参数大概是这些。但系统必须再检查一遍这次到底允不允许执行所以我们需要把一次工具调用拆开。不是模型决定 - 工具执行而是类似下面的流水线处理思路分类 - 规划 - 策略 - 审批 - 执行 - 错误处理 - 重试/降级 - 审计 - 回复我暂且把这个线路叫做【工具调用的治理流水线】乍一看节点线路是挺长也挺绕的但每一段都有明确作用。对应的Graph结构大概是这样读图时可以先不用纠结每条分支只记住一个大方向请求从分类、规划、策略、审批一路往下走能执行才进入execute_tool不能执行或已经被拒绝就直接进入审计。请求先经过分类节点问题问的是帮我封禁这个IP第一步先分类。在这个示例的安全运维工具执行系统里我们把动作粗略分成三类readonly只读查询这一类 high_risk_write高风险写操作这一类 unknown无法判断转人工的这一类而封禁IP显然不是只读查询它应该被分到high_risk_write这一步简单但关键因为后面的策略、审批、执行都是基于这个分类继续走的。然后进入规划节点分类之后才是规划规划节点负责把用户请求变成准备调用哪个工具 准备传什么参数对于“封禁这个IP”的这个问题规划结果可能是planned_tool: block_ip tool_args: ip: 192.0.2.10 reason: 用户请求封禁可疑来源到这里还依然只是形成了一个“准备执行的计划”planned_tool不是已经执行的工具。 tool_args也不是已经发送出去的参数。第一道真正的门策略检查分类节点可以知道你的问题类型是readonly还是high_risk_write还是unknown规划节点可以知道你的问题打算要用的是哪个工具使用啥参数有了分类也有了规划之后策略检查其实就问一个问题这个问题类型是否允许使用这个工具比如问题类型是readonly那它只应该使用只读工具类似下面这几个lookup_asset query_exposure check_ip_reputation再比如问题类型如果是high_risk_write它就应该仅使用支持的是写操作工具block_ip add_account_to_watchlist策略检查这个节点要做的就是1、readonly请求只能使用readonly工具。2、high_risk_write请求只能使用写操作工具。3、unknown请求不自动执行直接转人工。代码逻辑大概是def enforce_tool_policy(state): action_type state.get(action_type) planned_tool state.get(planned_tool) allowed_tools ALLOWED_TOOLS_BY_ACTION_TYPE.get(action_type, {}) if planned_tool in allowed_tools: return {tool_status: pending} return { tool_status: failed, tool_error: {type: tool_not_allowed}, }第二道门人工审批现在请求已经走到这里看一下当前的state分类high_risk_write 规划block_ip 策略允许进入下一关因为block_ip是高风险写操作所以还不能直接执行这个工具调用需要人工审批。readonly的工具调用一般情况下不需要人工审批这里的人工审批用LangGraph里的interrupt()让图停下来approval_result interrupt( { question: 这个高风险工具动作是否允许执行, planned_tool: state.get(planned_tool, ), tool_args: state.get(tool_args, {}), expected_resume_shape: { decision: approved 或 denied, operator: 审批人, reason: 审批原因, }, } )意思是图先停在这 把要执行的工具和参数展示给外部审批人 等外部用Command(resume...)把审批结果传回来倘若传回来的是{”decision”: ”approved”, ”operator”: ”alice”, ”reason”: ”已确认恶意来源”}图就继续往下走进入真正的工具执行节点了这一步把“模型建议调用工具”和“人批准执行工具”分开其实就是进入Human-in-the-loop了。批准之后工具才真正执行只有当审批结果是approved才会走到execute_tool才是真的调用block_ipblock_ip( ip192.0.2.10, reason用户请求封禁可疑来源 )至此完整主线是用户请求封禁IP ↓ 分类为high_risk_write ↓ 规划成block_ip ↓ 策略检查通过 ↓ interrupt暂停等待审批 ↓ 人工approved ↓ 执行block_ip ↓ 写入审计日志 ↓ 回复用户回看一下你会发现这已经和文章一开始那种【模型规划后直接执行】的“智能的流程”完全不是一回事了。如果人工拒绝呢再看同一个请求的另一条岔路还是帮我封禁这个IP。的这个问题分类、规划、策略检查都一样图依然会停在审批节点但这次审批人传回{”decision”: ”denied”, ”operator”: ”alice”, ”reason”: ”证据不足”}这时流程会直接进入审计不会进入execute_tool第1节给出的graph结构也是这个逻辑而audit_log里记录了下面这些说明危险动作确实被挡住了。approval: denied tool_status: denied如果规划错了呢换一个请求比如问的是请查询xxxx错误示例因为有“查询”这个关键字所以第一个节点的分类结果是readonly正常情况下readonly只能使用只读工具比如query_exposure、lookup_asset。但为了测试策略检查节点有没有用我们故意让规划节点犯错让它使用planned_tool: block_ip翻译过来就是用户明明是普通的查询只读类型 规划却给了一个封禁工具可写工具这时候策略节点会发现action_type: readonly planned_tool: block_ip allowed_tools: lookup_asset, query_exposure, check_ip_reputationblock_ip不在readonly允许工具集合里所以结果是tool_status: failed tool_error.type: tool_not_allowed然后流程直接进入审计不会进入工具执行。这个也证明了一件事就算规划错了策略节点也能在执行前拦住越权工具。如果工具自己失败了呢再看一个只读请求请查询unstable.example.com的暴露服务。分类结果是readonly规划结果是query_exposure策略检查也能通过只读动作不需要人工审批所以会直接进入工具执行。上面这些都没问题但这个工具执行时超时了errorexposure scanner timeout如果异常直接抛出去整张图就崩了。崩了后面没有重试没有人工工单没有审计更没有llm给你回复了所以execute_tool节点要捕获异常把它写回Statetry: result tool(**tool_args) return { tool_status: success, tool_result: result, tool_error: {}, } except Exception as exc: return { tool_status: failed, tool_error: { type: tool_runtime_error, message: str(exc), }, }Exception里的return要确保的是工具执行可以失败但图不能走不下去工具失败只是进入了一个可处理状态。接下来在retry_or_fallback节点里会判断如果没有触发最大重试次数就重试如果达到最大重试次数后仍然失败就创建人工处理工单tool_status: ticket_created manual_ticket: SEC-MANUAL-001这比直接报错要稳得多系统没有假装成功也没有无限重试更没有让整张图崩掉。最后一定要有audit_log前面看了几类测试路径审批通过执行工具 审批拒绝不执行工具 策略拦截执行前拒绝 工具失败重试后转人工这些路径最后都是要进入audit_log因为审计日志要回答的是用户请求是什么 系统怎么分类 规划了哪个工具 参数是什么 策略有没有放行 审批人是谁 审批结果是什么 工具有没有执行 结果是什么 失败后有没有重试 最后有没有转人工audit_log代表的是这次工具调用的证据链其重要性不需要过多解释。现在再看整条工具治理流水线分类 - 规划 - 策略 - 审批 - 执行 - 错误处理 - 重试/降级 - 审计 - 回复它其实是在回答一次工具调用里的几个现实问题1、分类这是什么类型的动作 2、规划准备调用哪个工具 3、策略这个类型允许用这个工具吗 4、审批危险动作有没有人批准 5、执行工具什么时候才真正被调用 6、错误处理失败后图会不会崩 7、重试/降级失败后怎么收场 8、审计事后怎么查 9、回复怎么把最终状态解释给用户上面这条流水线算是提供一种工具调用治理的思想说实话是比普通tool loop长的多但至少说明agent在工具调用治理方面我们能做也需要做的事儿还是挺多的。实验细节GitHub 仓库 https://github.com/yauld/ai-forge 完整实验文章 labs/langgraph/foundations/23 | LangGraph 工具调用治理让工具执行可控、可恢复、可审计.md 实验代码 labs/langgraph/foundations/experiments/23_tool_governance_console/学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

扣子+飞书+企微自动化闭环搭建:1个智能体打通3大办公平台的9个关键接口(含OAuth2.1授权绕过方案)

扣子+飞书+企微自动化闭环搭建:1个智能体打通3大办公平台的9个关键接口(含OAuth2.1授权绕过方案)

更多请点击: https://codechina.net 第一章:扣子智能体的核心架构与跨平台集成原理 扣子智能体(Coze Bot)采用模块化分层架构设计,其核心由编排引擎、插件调度器、上下文记忆层和多协议适配网关四大组件构成。编排引擎…

2026/7/24 0:44:43 阅读更多 →
影刀RPA 自动化竞品监控系统:价格与产品变动实时追踪

影刀RPA 自动化竞品监控系统:价格与产品变动实时追踪

影刀RPA 自动化竞品监控系统:价格与产品变动实时追踪 作者:林焱 写在前面 竞品监控是运营和产品团队的日常工作,但靠人工每天盯竞品官网、电商页面极其低效。本文搭建一套完整的竞品监控系统:定时采集竞品数据 → 与历史数据对比…

2026/7/24 0:43:42 阅读更多 →
Harness Engineering的落地实践

Harness Engineering的落地实践

摘要:Harness Engineering 最近很火,但我翻了数十篇文章大部分都在讲它的概念,极少人去讲解它的落地实践。今天这篇文章我将大致讲解什么是 Harness Engineering,并讲解一个采用 Harness Engineering 架构设计、基于 LangChain De…

2026/7/24 0:43:42 阅读更多 →

最新新闻

400电话多场景架构适配与企业选型实战:从热线接待、中转分流到风控合规落地

400电话多场景架构适配与企业选型实战:从热线接待、中转分流到风控合规落地

标签:#400电话 #企业热线 #语音中继 #呼叫路由 #客服架构 #通信场景化落地阅读对象:后端开发、通信架构师、IT运维、系统集成、企业客服项目交付人员摘要:大部分企业对400电话的认知仅停留在“品牌热线”层面,忽略了其路由架构、并…

2026/7/24 0:53:46 阅读更多 →
面试官:大模型怎么决定 长期记忆是否需要召回?

面试官:大模型怎么决定 长期记忆是否需要召回?

先说结论: 严格来说,并不是大模型单独决定是否召回长期记忆,而是由 Agent Runtime、记忆管理器和大模型共同完成决策。 一、面试时可以这样回答 在一个完整的 AI Agent 系统中,长期记忆是否需要召回,一般不是简单地每…

2026/7/24 0:52:46 阅读更多 →
ADAS1021KCBZ-RL,集成脉冲 / 阻抗检测的 5 通道低电位采集前端

ADAS1021KCBZ-RL,集成脉冲 / 阻抗检测的 5 通道低电位采集前端

型号介绍ADAS1021KCBZ-RL 是一款高度集成的 5 通道模拟前端,它具备直流导联脱落检测与交流电极接触质量检测两套电路。直流检测覆盖全部 ECG 通道与 RLD 参考电极,检测激励电流、输出极性、脱落判定阈值全部可编程;交流阻抗检测用于评估电极与…

2026/7/24 0:51:45 阅读更多 →
基于YOLOv5的动物识别系统设计与优化

基于YOLOv5的动物识别系统设计与优化

1. 项目概述:基于YOLOv5的动物识别系统这个项目使用YOLOv5目标检测算法构建了一个高效的动物识别系统。作为一名长期从事计算机视觉开发的工程师,我发现YOLOv5在实时性和准确性之间取得了很好的平衡,特别适合动物识别这类需要快速响应的场景。…

2026/7/24 0:50:45 阅读更多 →
深度强化学习在混合动力汽车能量管理中的应用与优化

深度强化学习在混合动力汽车能量管理中的应用与优化

1. 混合动力汽车能量管理策略概述 混合动力汽车(HEV)作为传统燃油车向纯电动车过渡的关键技术路线,其核心挑战在于如何高效协调发动机与电动机的能量分配。能量管理策略(EMS)直接决定了整车燃油经济性、排放性能以及动…

2026/7/24 0:50:45 阅读更多 →
Python「假多态」与 C++「真多态」的核心区别

Python「假多态」与 C++「真多态」的核心区别

目录 Python「假多态」与 C「真多态」的核心区别 一、先搞懂:C 的「真多态」是什么? 1. 核心实现机制 2. 必须满足的 3 个条件 3. 核心特点 4. C 多态示例代码 二、Python 的「假多态」为什么是「假」的? 1. 核心本质:鸭子…

2026/7/24 0:50:45 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻