Governed Agent架构:LLM与规则引擎结合的业务流程控制
1. 先搞清楚 Governed Agent 到底解决什么问题如果你用过基于 LLM 的智能助手或自动化流程大概率遇到过这种情况模型有时候会“自由发挥”给出不符合业务规则的回答或者在代码生成、数据处理等需要精确输出的场景里产生不可控的结果。Governed Agent 这个方案的核心就是把 LLM 的“创意”和业务规则的“确定性”分开处理让 LLM 负责理解用户请求、提取关键信息但最终决策和执行交给预设的规则和代码。这样做最直接的好处是在需要严格遵循流程、合规要求或数据一致性的任务中你能确保输出结果不会因为模型的随机性而偏离预期。比如财务审核、合同条款检查、数据转换脚本生成这类场景模型可以帮你快速理解需求但具体的判断逻辑、计算规则、输出格式都由代码牢牢控制。我建议先从这个角度判断你是否需要深入了解 Governed Agent如果你的任务中既有需要自然语言理解的灵活部分又有必须准守的固定规则而且你对模型直接输出结果的稳定性有顾虑那这个架构就值得一试。2. 拆解 Governed Agent 的基本工作流程Governed Agent 不是某一个具体工具或框架而是一种架构模式。它的核心流程可以拆成三步2.1 LLM 只做意图解析和信息提取第一步用户输入的自然语言请求比如“帮我把上个月销售额超过 10 万的订单找出来按地区统计数量”先交给 LLM 处理。但这里 LLM 的任务被严格限定为解析意图和提取结构化参数而不是直接生成最终答案。LLM 在这一步的输出可能是这样的结构化信息{ intent: query_sales_data, filters: { time_range: last_month, amount_threshold: 100000 }, aggregation: { field: region, operation: count } }这个环节的关键约束是LLM 不需要决定怎么查询数据、用什么统计方法、输出什么格式——它只负责把用户的话“翻译”成机器可处理的参数。2.2 规则引擎验证参数合法性第二步LLM 输出的参数会进入规则验证阶段。这里的规则可以是业务规则比如“销售额阈值不能超过系统上限 100 万”、安全规则比如“用户只能查询自己权限范围内的数据”或技术规则比如“时间范围格式必须符合 YYYY-MM-DD”。如果参数验证失败流程会直接返回错误信息给用户或者让 LLM 重新澄清需求不会进入执行阶段。这个环节完全由确定性代码控制没有模型的随机性参与。2.3 代码模块执行具体操作第三步通过验证的参数会触发对应的代码模块执行实际任务。比如上面的销售统计例子可能会调用一个预设的数据查询函数传入时间范围、金额阈值等参数执行 SQL 查询然后按地区分组计数。最终输出可能是表格、图表或结构化数据格式完全由代码决定。LLM 在这一步可能参与结果的自然语言摘要比如“统计完成共发现 3 个地区符合条件”但核心数据和逻辑不依赖模型生成。3. 什么时候该用 Governed Agent 架构不是所有 LLM 应用都需要这么严格的控制。通过几个具体场景对比你能更清楚这个模式的适用边界。3.1 适合 Governed Agent 的场景数据查询和报表生成用户用自然语言描述想要的数据LLM 解析成查询条件但实际的数据库查询、计算、格式化都由代码处理。这样能保证数据准确性和查询效率。工作流审批LLM 可以理解用户提交的申请内容但具体的审批规则比如金额分级审批、权限检查由规则引擎严格执行避免模型误判。代码生成和校验LLM 根据需求描述生成代码片段但编译、测试、安全检查由自动化流程完成确保生成的代码可运行且安全。合同和文档审核LLM 提取关键条款和数值但合规性检查、格式标准化由预设规则处理减少漏检风险。这些场景的共同点是任务有明确的标准流程输出需要高度一致性错误成本较高。3.2 可能不需要 Governed Agent 的场景创意写作和头脑风暴这类任务本身就需要模型的发散性过度约束会限制创造性。简单问答和知识查询如果只是事实性问答直接让 LLM 回答通常更高效不需要拆解成解析-执行两阶段。探索性数据分析和可视化如果用户需要快速尝试不同分析角度交互式地让 LLM 直接生成图表可能更灵活。判断的关键在于你的任务是否需要“每次都必须得出相同结果”的确定性。如果需要Governed Agent 架构能提供更好的可控性。4. 实际搭建一个最小可行案例下面我用一个具体的例子演示如何实现一个简单的 Governed Agent。这个案例模拟“员工报销审批”场景用户用自然语言提交报销申请LLM 解析金额和类别规则引擎检查是否符合公司政策最终输出审批结果。4.1 环境准备和依赖选择这个 demo 需要以下基础环境Python 3.8任选一个 LLM API如 OpenAI GPT、Claude、本地部署的模型简单的规则引擎可以用 Python 字典或轻量级库如durable_rules如果你只是实验建议先用 OpenAI API 或 Claude API它们有清晰的接口文档和稳定的服务。如果考虑数据隐私或成本也可以选择本地部署的开源模型但要注意模型能力是否足够准确解析意图。安装基础依赖pip install openai requests4.2 定义业务规则和数据模型先明确报销规则这是整个系统的确定性基础# 报销规则定义 REIMBURSEMENT_RULES { max_amount: { meal: 1000, # 餐费最高 1000 元 transport: 500, # 交通费最高 500 元 accommodation: 2000 # 住宿费最高 2000 元 }, require_receipt: True, # 是否需要发票 approval_flow: { low: {max_amount: 500, approver: direct_manager}, medium: {max_amount: 2000, approver: department_head}, high: {approver: finance_director} } }同时定义标准的数据模型确保 LLM 输出和规则引擎使用相同的结构from typing import TypedDict class ReimbursementRequest(TypedDict): amount: float category: str # meal, transport, accommodation description: str has_receipt: bool4.3 实现 LLM 解析模块LLM 的任务是把自然语言转换成结构化数据。这里需要设计清晰的提示词来约束输出格式import openai def parse_reimbursement_request(user_input: str) - ReimbursementRequest: prompt f 请将以下报销申请解析为结构化数据。用户输入{user_input} 输出必须是严格的 JSON 格式包含以下字段 - amount: 数字表示报销金额 - category: 字符串只能是 meal、transport、accommodation 中的一个 - description: 字符串简要描述报销事由 - has_receipt: 布尔值表示是否有发票 示例输出 {{amount: 300, category: meal, description: 客户接待餐费, has_receipt: true}} 现在解析以下输入 response openai.ChatCompletion.create( modelgpt-3.5-turbo, messages[{role: user, content: prompt}], temperature0.1 # 低随机性确保输出稳定 ) # 这里应该添加 JSON 解析和错误处理 return parse_json_response(response.choices[0].message.content)关键点temperature 设为较低值如 0.1减少模型创造性提示词中明确指定输出格式和取值范围实际使用时需要添加完整的错误处理。4.4 实现规则验证模块规则验证部分完全用确定性代码实现def validate_reimbursement(request: ReimbursementRequest) - dict: errors [] # 检查类别是否有效 if request[category] not in REIMBURSEMENT_RULES[max_amount]: errors.append(f无效的报销类别: {request[category]}) # 检查金额是否超限 category_max REIMBURSEMENT_RULES[max_amount][request[category]] if request[amount] category_max: errors.append(f{request[category]}类别报销金额不能超过{category_max}元) # 检查发票要求 if REIMBURSEMENT_RULES[require_receipt] and not request[has_receipt]: errors.append(此类报销必须提供发票) # 确定审批流程 amount request[amount] if amount 500: approval_level low elif amount 2000: approval_level medium else: approval_level high approver REIMBURSEMENT_RULES[approval_flow][approval_level][approver] return { is_valid: len(errors) 0, errors: errors, approval_level: approval_level, approver: approver }这个模块没有任何随机性同样的输入永远产生同样的输出。4.5 组装完整流程最后把各个模块组合起来def process_reimbursement_request(user_input: str) - dict: # 1. LLM 解析 try: parsed_request parse_reimbursement_request(user_input) except Exception as e: return {error: f解析请求失败: {str(e)}} # 2. 规则验证 validation_result validate_reimbursement(parsed_request) # 3. 生成最终响应 if validation_result[is_valid]: response { status: approved, message: f报销申请已受理金额{parsed_request[amount]}元需要{validation_result[approver]}审批, next_step: f请将材料提交给{validation_result[approver]} } else: response { status: rejected, message: 报销申请不符合规定, errors: validation_result[errors] } # 可以在这里添加 LLM 生成的自然语言摘要 response[user_friendly_message] generate_summary(response, parsed_request) return response这个简单 demo 展示了 Governed Agent 的核心思想LLM 负责理解代码负责决策。5. 生产环境需要考虑的关键问题如果要把这个架构用到实际项目中有几个方面需要特别注意。5.1 LLM 解析的可靠性保障LLM 解析是整个流程中最可能出错的环节。在生产环境中需要多轮澄清机制当 LLM 解析置信度低或参数缺失时应该让模型主动向用户提问澄清而不是猜测。解析结果验证对 LLM 的输出添加完整性检查比如必填字段是否齐全、数值格式是否正确。备用解析方案对于关键任务可以准备模板化的输入格式作为备选当自然语言解析连续失败时切换。版本控制LLM 模型版本升级可能影响解析效果要有版本回滚和 A/B 测试机制。5.2 规则引擎的维护复杂度随着业务发展规则会变得越来越复杂。需要规则版本管理业务规则变更要有明确的版本控制和发布流程。规则测试套件每次规则修改都要有完整的测试用例覆盖边界情况。规则冲突检测当多条规则可能产生冲突时要有优先级机制和冲突预警。规则可视化编辑非技术人员可能需要通过界面配置简单规则而不是直接修改代码。5.3 错误处理和重试策略Governed Agent 涉及多个环节错误处理要更细致环节间超时控制LLM 调用、规则执行、代码运行都要设置合理的超时时间。** graceful degradation**当某个环节失败时系统应该有能力降级处理而不是完全不可用。详细日志记录每个环节的输入输出都要完整记录便于问题排查。用户反馈机制当系统处理结果不符合用户预期时要有便捷的反馈渠道来优化模型和规则。5.4 性能和扩展性考虑LLM 调用优化批量处理请求、缓存常见解析结果、使用更轻量的模型处理简单任务。规则引擎性能复杂的规则匹配可能成为性能瓶颈需要考虑规则索引和优化。水平扩展无状态的设计更容易水平扩展但要确保规则配置的一致性。6. 与其他架构模式的对比理解 Governed Agent 的独特价值最好通过与其他常见架构的对比。6.1 与纯 LLM 应用的对比纯 LLM 应用把整个任务都交给模型处理优势是灵活简单适合创意类任务。缺点是输出不可控可能产生不符合业务规则的结果也不适合需要精确计算或数据操作的场景。Governed Agent 通过规则和代码约束模型的输出范围牺牲一部分灵活性换取确定性和可靠性。6.2 与传统规则系统的对比传统规则系统完全基于预设逻辑处理结构化输入很高效但无法理解自然语言。当用户需求用自然语言表达时需要先人工翻译成系统能理解的参数。Governed Agent 结合了两者的优势用 LLM 处理自然语言的理解问题用规则系统保证执行的确定性。6.3 与 RAG检索增强生成的对比RAG 主要解决模型知识陈旧和幻觉问题通过检索外部知识来增强生成的准确性。但 RAG 不解决业务规则执行的问题——即使引用了正确的知识模型仍然可能生成不符合规则的输出。Governed Agent 可以和 RAG 结合使用用 RAG 确保模型基于准确的知识用规则引擎确保输出符合业务要求。7. 实际落地时的经验建议基于我在类似项目中的经验Governed Agent 架构落地时有几个实用建议。7.1 先从高风险场景的小范围试点开始不要一上来就在全公司推广。选择一个业务价值明显、错误成本较高的场景作为试点比如财务报销、合规检查、数据质量验证等。试点阶段重点验证几个问题LLM 解析的准确率是否能达到业务要求规则引擎是否能覆盖所有边界情况整个流程的响应时间是否可接受用户对交互方式的接受程度7.2 建立明确的职责分工Governed Agent 涉及多个技术栈最好有明确的团队分工LLM 工程师负责提示词优化、模型选择、解析准确性提升业务规则专家负责规则设计、验证、维护后端工程师负责系统集成、性能优化、错误处理产品经理负责定义用户体验、设计交互流程小团队可能一人多职但要确保每个环节都有明确的责任人。7.3 设计渐进式复杂度的实施路径不要试图一次性实现完美的 Governed Agent。建议按这个顺序推进第一阶段实现基本的解析-验证流程处理最简单的用例人工审核所有输出。第二阶段扩大用例范围优化解析准确率建立自动化测试。第三阶段添加多轮对话、错误恢复、个性化规则等高级功能。第四阶段考虑规模化部署、监控告警、性能优化。每个阶段都要有明确的成功标准和退出条件。7.4 重点关注可观测性和调试能力Governed Agent 的复杂性意味着问题可能出现在多个环节。要投入足够精力建设可观测性详细日志记录每个环节的输入输出、处理时间、错误信息。用户会话追踪能够完整重现用户的一次请求处理过程。性能监控监控 LLM 调用延迟、规则执行时间、系统资源使用情况。业务指标跟踪解析准确率、规则匹配率、用户满意度等业务指标。好的调试工具能大幅降低运维成本加快问题排查速度。Governed Agent 架构在需要结合自然语言灵活性和业务规则确定性的场景中很有价值但实施复杂度较高。建议先从明确的小场景开始验证重点保障 LLM 解析的可靠性和规则引擎的完备性再逐步扩大应用范围。

相关新闻

免费绕过iPhone激活锁的终极指南:5分钟解锁你的iOS设备

免费绕过iPhone激活锁的终极指南:5分钟解锁你的iOS设备

免费绕过iPhone激活锁的终极指南:5分钟解锁你的iOS设备 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾面对着一台被激活锁困住的iPhone,感到束手无策?无论…

2026/8/29 20:00:27 阅读更多 →
Anime.js完整指南:5分钟从零开始打造专业级网页动画

Anime.js完整指南:5分钟从零开始打造专业级网页动画

Anime.js完整指南:5分钟从零开始打造专业级网页动画 【免费下载链接】anime JavaScript animation engine 项目地址: https://gitcode.com/GitHub_Trending/an/anime 想要为网站添加流畅动画效果却担心代码复杂?Anime.js正是你需要的JavaScript动…

2026/8/22 16:24:48 阅读更多 →
GPT-5.4系统级交互与开发自动化实战

GPT-5.4系统级交互与开发自动化实战

1. GPT-5.4 原生计算机操作能力解析 作为一名长期奋战在开发一线的程序员,当我第一次看到GPT-5.4可以直接操作系统界面时,那种震撼感不亚于当年从命令行过渡到图形界面。这绝非简单的功能迭代,而是彻底改变了人机交互的方式。 1.1 技术突破…

2026/8/25 5:20:58 阅读更多 →

最新新闻

用 .NET 10 技术栈 “玩转 AI 学习” 的路线图:从 Minimal API 到 AI Agent 产品

用 .NET 10 技术栈 “玩转 AI 学习” 的路线图:从 Minimal API 到 AI Agent 产品

.NET 10 AI 学习路线图:从 Minimal API 到 Agent 产品一篇写给 .NET 程序员的上手路线。不劝你用 Python 重写后端,而是把 AI 当成「新一类后端依赖」来学——先用起来,再逐步把数据库、工具和推理挂上去。一、为什么需要这份路线图 很多 .NE…

2026/8/29 20:05:25 阅读更多 →
Scrut:基于Git变更的Python增量静态代码审查工具

Scrut:基于Git变更的Python增量静态代码审查工具

Scrut 是一个很有意思的 Python 静态代码审查工具,核心思路一句话就能说明白:只审查 Git 里发生变更的文件,而不是每次把整个项目从头到尾重扫一遍。这个设计解决的是大型仓库里最常见的痛点——全量静态分析太慢、存量报错太多,开…

2026/8/29 20:05:25 阅读更多 →
看懂Python各种骚操作,为什么写不出自动化脚本?|零壹教育分享

看懂Python各种骚操作,为什么写不出自动化脚本?|零壹教育分享

总是刷那些短视频, 还要去看自媒体给出的文章, 在这过程当中, 我们常常会瞧见好多看上去相当厉害的“骚操作”, 仅仅用上几行代码, 就能弄出特别酷炫的效果。好多上班族看得饶有兴致, 收藏了数量众多的教程, 各种各样冷门的技巧, 他们都能够讲出一二, 内心自以为收获颇多。然而…

2026/8/29 20:05:25 阅读更多 →
Whale框架:万亿参数模型分布式训练的核心架构与工程实践

Whale框架:万亿参数模型分布式训练的核心架构与工程实践

1. 从“大”到“智”:万亿参数模型训练的工程挑战当我们在新闻里看到“万亿参数”、“千亿级模型”这些词汇时,第一反应往往是惊叹于其庞大的规模。但作为一名长期混迹于AI工程一线的从业者,我深知这背后真正的挑战,从来不是“参数…

2026/8/29 20:05:25 阅读更多 →
从零构建Linux SPI字符设备驱动:深入理解设备树、驱动框架与数据传输

从零构建Linux SPI字符设备驱动:深入理解设备树、驱动框架与数据传输

1. 从零到一:为什么我们需要亲手写一个SPI驱动? 如果你在嵌入式Linux领域摸爬滚打了一段时间,大概率已经用过不少现成的驱动。比如,要驱动一个SPI接口的OLED屏幕,你可能会在设备树里加个节点,然后在内核配置…

2026/8/29 20:05:25 阅读更多 →
Partmode开源CAD:浏览器里的SolidWorks替代方案体验与部署评估

Partmode开源CAD:浏览器里的SolidWorks替代方案体验与部署评估

Partmode 这个开源项目,最近引起我注意的倒不是“开源 CAD”这个概念本身,而是它的 Live browser demo——不需要安装庞大的桌面客户端,打开浏览器就能实际体验建模流程。定位上,它被看作 SolidWorks 的开源替代思路,对…

2026/8/29 20:04:25 阅读更多 →

日新闻

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:00:24 阅读更多 →
【JavaScript】内存管理-垃圾回收机制-内存泄露

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:00:24 阅读更多 →
Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

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

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/29 18:08:35 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 23:05:07 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/28 19:47:53 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →