简介:当Agent能调用工具却看不懂业务规则时,企业落地便卡在“最后一公里”。本教程从RAG、工具调用、工作流的能力边界讲起,带你一步步构建业务本体模型:梳理实体与关系、统一口径、定义权限与审批边界,并给出配置示例、验证方法与排查思路,让Agent在企业允许的范围内可靠行动。
本教程要解决的问题是:当 AI Agent 已经具备调用工具、执行工作流的能力之后,如何让它真正理解一家大型企业的业务世界,并在企业允许的边界内可靠地行动。
具体来说,读完本教程你将能够:
适合读者:正在或计划在企业内部落地 AI Agent 的开发者、架构师、运维人员与技术负责人;对企业数据治理、主数据管理有一定了解的业务技术人员同样适用。
本教程的方法适用于以下典型场景:
反之,如果你的场景只是“回答文档里的问题”或“单次调用一个无副作用的查询接口”,那么仅靠检索增强与工具调用即可,无需引入完整本体层。
在开始建模之前,需要确认以下基础条件。这些条件缺一不可,否则后续步骤会反复返工。
1. 业务规则的可获取性
需要能找到熟悉业务的人(业务分析师、运营负责人、风控人员),把“逾期 30 天怎么算”“部分还款是否计入”“谁有权查看欠款金额”这类问题的答案明确写下来。模型不会凭空知道这些,必须由人提供权威口径。
2. 数据资产的盘点结果
需要一份跨系统的数据字典,至少包含:每个系统中客户相关表的表名、字段名、主键、外键、字段业务含义。重点记录同一实体在不同系统中的不同命名,例如某系统叫 customer_id,另一系统叫 cust_no,还有系统使用 account_id。
3. 权限模型说明
需要明确企业现有的角色划分与数据访问控制方式,例如按区域、按部门、按金额阈值分级授权。Agent 的每一次读写都必须映射到某个具体身份上。
4. 基础运行环境
5. 团队共识
需要提前对齐一件事:本体的维护责任归谁。实践中最常见的失败原因不是技术,而是本体定义无人维护、规则变更后模型仍按旧口径执行。
做什么:选取一个真实的高价值任务,例如“找出华东区逾期超过 30 天的客户,按风险等级排序,并为高风险客户自动创建跟进任务”,把它拆解成一份结构化任务说明书,列出:输入、输出、涉及的实体、涉及的判断点、涉及的动作。
为什么做:这一步的作用是把自然语言任务转化为可建模的对象清单。如果不先拆解,直接写提示词,模型会把大量隐含假设“猜”进去,而这些假设往往与企业实际规则不符。
注意什么:拆解时要显式标记“不确定项”。例如“逾期 30 天”的起算日是账单日还是到期日?“部分还款”后剩余金额如何计算?这些不确定项就是下一步要问业务方的问题,不能留给模型自行决定。
示例(任务说明书片段,伪结构):
任务:高风险逾期客户跟进输入:区域=华东, 逾期阈值=30天实体:客户、账户、账单、跟进任务判断点:- 逾期天数计算口径(待确认)- 部分还款是否抵扣(待确认)- 风险等级划分依据(待确认)动作:创建跟进任务(需审批)
做什么:把上一步的实体清单映射为统一本体:定义实体类型(客户、账户、账单、任务)、每个实体的唯一标识、实体之间的基数关系(一个客户对应几个账户、一个账户对应几笔账单),并建立“字段映射表”,把各系统中的不同字段名映射到本体属性上。
为什么做:这是解决“同一个客户在不同系统里叫不同名字”的核心手段。Agent 面向本体编程,而不是面向某张具体表编程,跨系统查询与聚合才有统一入口。
注意什么:映射表必须标注“权威来源”。当两个系统对同一属性取值不一致时(例如客户等级),需要指定以哪个系统为准,否则 Agent 会在冲突数据上给出不确定结论。
示例(字段映射,伪结构):
本体实体:Customer属性:customerKey(本体主键)映射:CRM系统.customer_id -> customerKey计费系统.cust_no -> customerKey数仓.account_id -> customerKey(经账户关系间接映射)权威来源:CRM系统
做什么:将步骤 1 中的不确定项全部落到规则定义中,每条规则包含:规则名、适用实体、计算表达式、生效条件、版本号。规则以配置或代码形式存放在本体层,而不是写进提示词。
为什么做:规则一旦写进提示词,就无法审计、无法版本管理、无法在规则变更时统一更新。显式规则让“逾期天数”“风险等级”成为确定性的计算,模型只负责理解意图与选择规则,不负责发明规则。
注意什么:规则要区分“计算规则”与“准入规则”。前者如逾期天数公式,后者如“只有风控角色可查看欠款金额”。两类规则在 Agent 执行链路上的位置不同:计算规则在查询与判断阶段,准入规则在执行动作之前。
示例(规则定义,伪代码):
规则 overdueDays:适用: Account表达式: max(0, 当前日期 - 账单到期日 - 宽限期天数)备注: 起算与宽限期由业务方确认规则 riskLevel:适用: Customer条件: overdueDays > 30 且 未结清金额 > 阈值输出: 高 / 中 / 低规则 actionGuard.createFollowUp:前置: 调用者具备 followUp:create 权限审批: 高风险客户需二级审批
做什么:为 Agent 设定运行身份,把每个可执行动作登记为白名单条目,条目中声明所需权限、是否需要审批、参数校验规则、最大影响范围(例如单次最多创建多少条任务)。
为什么做:模型能力越强,越需要“允许做什么”的硬边界。白名单是确定性的,不依赖模型判断,能从架构层面杜绝越权操作与批量误操作。
注意什么:白名单要按“最小必要”原则配置。查询类动作可开放较宽范围,写入类动作应严格限制,尤其是涉及金额、状态变更、对外通知的动作。
做什么:把 Agent 的执行流程固化为六个阶段,每个阶段有明确的输入输出:
为什么做:把“模型判断”与“确定性计算”分开,是可靠性的关键。模型只出现在第 1 阶段与第 2 阶段的语义映射上,第 3 至 6 阶段全部由代码与规则完成,可复现、可审计。
注意什么:第 2 阶段最容易出错。建议为本体实体与属性维护同义词表(客户/客户号/账户主体等),并在解析失败时返回明确错误而非让模型自由发挥。
以下为通用配置示意,用于说明结构,不涉及具体产品接口:
agent:identity: svc_agent_followuptools:- name: query_customer_by_regiontype: readpermission: customer:read- name: query_bill_by_accounttype: readpermission: bill:read- name: create_followup_tasktype: writepermission: followup:createapproval: required_when_risk_is_highmax_batch: 50ontology:entities: [Customer, Account, Bill, FollowUpTask]rules: [overdueDays, riskLevel]rule_version: 2024-06-01pipeline:stages: [intent, ontology_resolve, rule_eval, authz, execute, audit]
配置的核心逻辑是:动作声明权限与批量上限,本体声明规则版本,链路声明阶段顺序。三者共同构成 Agent 的可控运行环境。
完成上述配置后,用以下方式验证是否达到目标:
问题 1:Agent 给出的逾期天数与业务方不一致。
排查方向:确认规则版本是否为最新、宽限期与起算日口径是否与业务确认一致、部分还款是否在计算前完成抵扣。多数此类问题源于规则未显式化,仍由模型推断。
问题 2:跨系统查询结果对不上。
排查方向:检查字段映射表中的权威来源配置;检查是否存在一对多关系未在映射中体现(例如一个客户多账户导致重复计数);检查是否存在时区或日期格式差异。
问题 3:Agent 执行写入动作被拒绝。
排查方向:核对运行身份是否具备白名单权限、是否触发审批条件、参数是否通过校验规则。拒绝本身是预期行为,重点是把拒绝原因返回给调用方,而不是让模型重试。
问题 4:规则变更后行为异常。
排查方向:确认规则版本号是否已切换、缓存是否刷新、历史审计记录是否可回溯。建议规则变更走与代码同等的发布流程。
问题 5:模型在意图解析阶段选错实体。
排查方向:补充同义词表、优化实体描述、在解析失败时返回候选列表让上游澄清,而不是让模型自行猜测。
本教程的核心结论是:企业级 Agent 的瓶颈不在模型是否聪明,而在企业是否把业务世界显式地建模出来。检索增强解决了“知识从哪来”,工具调用解决了“能不能动手”,工作流解决了“按什么顺序动手”,而本体层解决的是“动的手是否符合企业定义的世界”。
落地路径可以概括为:先写任务说明书拆出实体与判断点,再建实体关系与字段映射,再把规则显式化并版本化,然后用动作白名单划出权限边界,最后把执行链路固化为可审计的六阶段流程。按此路径推进,Agent 才能从“能演示”走向“敢在生产用”。后续可继续关注的方向包括:本体与主数据治理体系的融合、规则引擎与审批流的联动、以及多 Agent 场景下本体层的共享与隔离设计。