XBSTACK Tech Image - XBSTACK

AI 费用审批智能体实战:费用政策校验、预算控制、审批矩阵与审计闭环

Release Date
2026-05-21
Reading Time
17分钟
Impact Factor
2,208
AI Agent
财务自动化
费用审批
企业治理
审计日志
Xiaobai's Note / 实验室笔记

这篇文章记录了我在贵阳实验室的实战过程。我坚信,在技术下行的时代,程序员唯一的护城河就是通过 AI 建立属于自己的数字资产。

[!NOTE] 适用场景:适用于财务付款审批流的自动化合规审查与防灾拦截。 本文已归档至「财务自动化 Agents」专题。若需系统阅读智能体完整路径,请前往:财务自动化 Agents

痛点分析与目标读者

在传统的企业费用控制流程中,报销审核往往是一个耗时且容易出错的环节。员工提交的消费描述模糊不清(例如将聚餐费写为办公用品)、发票重复提交、报销金额超出差旅政策标准、或者超出了部门的月度预算。传统基于固定规则的费控系统通常需要大量的人工介入,且在面对多样化的消费场景和多国货币兑换时,规则配置会变得极其臃肿。

然而,如果盲目引入一个只会自动同意报销的简易 AI 智能体,往往会为企业带来严重的财务漏洞。AI 容易产生数字幻觉,在没有校验机制的情况下,极易被欺诈票据或虚构的业务目的所蒙蔽。

本文适合希望在财务与合规治理领域落地具有实际业务 ROI 的全栈开发者、寻求利用自动化技术降低合规成本的财务风控总监,以及需要规划企业自愈型内部控制系统的架构师。

费用审批智能体:从自动同意到可控治理

在真实企业治理中,费用审批智能体的定位是风险拦截哨兵,而非无条件代签的放行器。

普通的 Demo 往往只包含发票 OCR 提取和大模型对费用描述的总结,最终直接输出同意或拒绝。而在生产级费控场景下,一笔费用的合法性不仅取决于票据本身的真伪,还与提交人的职级、项目归属、实时剩余预算以及公司的差旅政策紧密关联。

因此,生产级的 AI 费用审批智能体必须是一个在约束条件下运行的决策辅助系统。它的核心任务是对每一笔报销进行多维度的政策碰撞、预算联动、重复核对,并将产生的风险报告呈报给对应的审批人,实现可追溯的费用治理。

多智能体管辖的费用审批标准架构

生产级费用审批智能体必须采用从数据摄取、政策审计、预算扣减到合规路由的流水线架构。

在这个架构中,不同的节点扮演着不同的财务控制角色,形成多智能体协作链条:

  1. 票据结构化层(Receipt Parser):负责接收员工提交的图片或 PDF,解析为强类型的报销元数据。
  2. 政策验证层(Policy Checker):对照企业的差旅与招待制度,校验当前费用是否超标。
  3. 预算核减层(Budget Checker):联动 ERP 和成本中心,查询项目或部门的可用额度。
  4. 欺诈分析层(Duplicate Detector):比对历史数据库,防止同一发票被多次重复报销。
  5. 决策流路由器(Approval Matrix Router):根据费用的综合风险评分和金额大小,将报销单路由至对应的审批链或挂起至人工复核通道。

这种架构确保了每一个流转节点都是受控且可观测的,从根本上杜绝了 AI 决策的不确定性。

报销单解析:多模态数据清洗与实体识别

使用多模态大模型对各种非结构化报销单进行准确清洗并映射到规范的 JSON 数据格式,是整个审批流程正常流转的前提。

我们需要定义严密的数据契约(Data Contract),以确保模型提取出的发票和报销单字段符合下游业务系统的类型校验。

以下是一个基于 Pydantic 编写的 ExpensePayload 强类型校验结构体:

import datetime
from typing import List, Optional
from pydantic import BaseModel, Field

class ReceiptItem(BaseModel):
    receipt_id: str = Field(description="发票唯一号码或识别号")
    category: str = Field(description="发票上的消费类别,例如餐饮、住宿、交通")
    amount: float = Field(description="单张发票的含税总金额")
    currency: str = Field(description="开票币种,如 CNY, USD")
    invoice_date: datetime.date = Field(description="发票开具日期")
    vendor_name: str = Field(description="开票销售方名称")

class ExpensePayload(BaseModel):
    expense_id: str = Field(description="报销单申请流水号")
    employee_id: str = Field(description="报销申请人员工 ID")
    department_id: str = Field(description="申请人所属部门编码")
    cost_center: str = Field(description="费用归属的成本中心编码")
    project_code: Optional[str] = Field(None, description="归属的项目编码")
    business_purpose: str = Field(description="员工填写的详细业务目的说明")
    receipts: List[ReceiptItem] = Field(description="该报销单下包含的所有发票列表")
    total_submitted_amount: float = Field(description="申请报销的总金额")
    submitted_at: datetime.datetime = Field(description="提交报销单的精确时间戳")

多模态 Agent 在接收到报销单据后,必须严格按照上述 Schema 输出结构化数据。若输出格式不符,将被数据校验层拦截并要求模型重试。

票据合规审计:发票状态检测与去重验证

对发票流水、税额、真伪状态以及是否重复报销进行语义校验,是防范财务欺诈的核心屏障。

发票的合规审计不能仅仅依赖 OCR 的文本识别,智能体必须执行以下两项关键步骤:

  • 接口对账:调用国家税务总局的发票查验接口,比对发票的代码、号码、开票日期与开具金额,确保票据的合法有效。
  • 语义防重:在数据库中建立已报销发票的唯一标识索引(如 vendor_name + invoice_date + amount)。即使员工在不同的报销单中使用了不同的照片角度重新提交同一张发票,智能体也必须能够精准拦截。

政策引擎:将财务政策编译为 Agent 的执行规则

将复杂的企业差旅及招待报销政策编译为可计算的判定分支,能够使智能体在匹配报销时做到有据可查。

如果仅仅向大模型提供一份长达百页的财务 Word 文档并让其自由判断,很容易发生政策漏检或错判。我们必须将企业的报销制度结构化。

例如,定义一份按员工职级和地区分类的差旅标准配置:

{
  "policy_rules": [
    {
      "rule_id": "rule-travel-accommodation-01",
      "category": "住宿",
      "grade_level_max": 5,
      "region_tier": "Tier_1",
      "daily_limit": 600.00,
      "currency": "CNY"
    },
    {
      "rule_id": "rule-travel-accommodation-02",
      "category": "住宿",
      "grade_level_max": 10,
      "region_tier": "Tier_1",
      "daily_limit": 1000.00,
      "currency": "CNY"
    }
  ]
}

智能体在比对某次差旅住宿费时,会根据申请人的员工档案(grade_level)和行程目的地(region_tier),从配置中匹配出对应的 daily_limit,然后再与发票金额进行数学计算。任何超出限制的金额都会被自动判定为违规,并附加政策条款证据。

预算拦截:成本中心控制与额度锁机制

费用审核智能体必须深度集成企业的成本中心,在报销阶段对月度或年度项目预算进行精准锁扣。

任何一笔报销的通过,都对应着企业某项预算支出的减少。智能体不能只是孤立地分析发票,它必须接入企业的预算控制接口。

以下是使用 Python 实现的预算检查器示例代码:

import json
import logging
from typing import Dict, Any

logger = logging.getLogger("agent.finance.budget")

class BudgetChecker:
    def __init__(self, budget_database: Dict[str, Dict[str, Any]]):
        # 模拟初始化的成本中心预算数据库
        self.db = budget_database

    def verify_and_lock_budget(self, request_payload: Dict[str, Any]) -> Dict[str, Any]:
        cost_center = request_payload.get("cost_center")
        requested_amount = request_payload.get("amount")
        expense_id = request_payload.get("expense_id")
        
        if cost_center not in self.db:
            return {
                "status": "rejected",
                "reason": "未找到指定的成本中心: " + str(cost_center)
            }
            
        center_info = self.db[cost_center]
        remaining = center_info["allocated_budget"] - center_info["used_budget"] - center_info["locked_budget"]
        
        if requested_amount > remaining:
            logger.warn(f"Budget exceeded for expense {expense_id} in cost center {cost_center}")
            return {
                "status": "escalation_required",
                "reason": "超出成本中心可用预算额度",
                "details": {
                    "remaining_budget": remaining,
                    "requested_amount": requested_amount,
                    "exceeded_amount": requested_amount - remaining
                }
            }
            
        # 锁定预算额度,等待财务最终过账
        self.db[cost_center]["locked_budget"] += requested_amount
        logger.info(f"Budget locked for expense {expense_id}. Locked amount: {requested_amount}")
        
        return {
            "status": "budget_locked",
            "remaining_budget": remaining - requested_amount,
            "locked_amount": requested_amount
        }

该逻辑保障了在智能体推理过程中,预算数据的增删改是绝对原子的,从而避免在高并发场景下出现超额报销或预算透支。

风险分析:复杂财务异常的模式识别与评分

基于统计学异常与语义相似度分析对报销行为进行风险评分,是捕捉隐蔽拆单、周末异常高频消费等欺诈套路的有效手段。

欺诈行为往往不是单一发票的违规,而是一系列行为的集合。欺诈分析层会对以下异常特征进行加权评分:

  • 拆单报销:为了避开大额报销的审批链阈值,将一笔大额费用拆分为多张小额发票在短时间内连续提交。
  • 时间异常:大量的商务招待费用发生在非工作时间或周末,且无法解释具体的业务目的。
  • 供应商关联性:频繁向同一家小微商户申请大额采购或咨询服务。

这些风险指标最终会汇总为一个 0 到 100 的综合风险评分(Risk Score)。评分大于 75 的报销单将直接被智能体拦截,并强行标记为高风险,进入财务合规小组的专人审查通道。

审批矩阵:非规则驱动的智能体合规路由

智能体不应自主生成审批链,而应根据费用金额、超预算状态和政策合规评级将任务精准分派至企业预设的审批矩阵中。

让大模型自主决定将报销送给谁审批是极其危险的。一旦模型产生幻觉,可能会将一笔涉及公司机密的支出直接发送给无关部门。

审批流必须由硬编码的审批矩阵(Approval Matrix)控制。智能体仅仅负责计算出该笔报销的判定属性(如:金额为 50000 CNY,超预算状态为 True,政策违规为 False)。

系统会将这些属性作为键值,去匹配企业的审批决策表:

  • 如果金额低于 1000 元且完全合规,直接路由给直属主管。
  • 如果超预算,即使金额很小,也必须路由给部门负责人和财务经理。
  • 如果涉及大额外部供应商采购,则必须加入合规总监与高层管理者的会签审批。

人在回路(HITL):关键财务控制的人工确认

高风险或超出基准阈值的报销必须挂起并进入人工复核队列,智能体仅提供决策辅助信息与异常证据链。

我们必须在自动化和风险控制之间取得平衡。对于智能体判定为高风险或超出特定额度的报销单,系统应当暂停自动化流转,生成待办任务并发送给人工审核员。

在人工审核界面上,智能体需要展示其推演过程:

  • 发票查验的结果与清晰度打分。
  • 自动检测到的政策违反点(包括对应的规则条款和超限金额)。
  • 关联项目预算的使用进度条。
  • 历史相似报销单的匹配度。

这种设计将财务人员的精力从繁琐的字面核对中解放出来,转而专注于处理由智能体过滤出来的高价值异常样本。

ERP 与银行支付系统的受控对接安全

Agent 对 ERP、财务系统或第三方银行支付接口的写入操作必须通过带数字签名的受控服务,严禁授予 Agent 直接的自由写权限。

在开发集成中,切忌给智能体模型配置可以直接写入 ERP 数据库或调用网银支付 API 的全局 Token。所有的支付与记账动作,都必须被封装成受控的工具(Tool)。

受控工具需要满足:

  • 每次写操作都必须附带原始的 trace_id 和审批批准的数字签名。
  • 所有的写入请求都必须经过只读的前置校验(Dry Run),确保入账科目和金额完全符合 ERP 系统的逻辑约束。
  • 引入幂等性键(Idempotency Key),防止因网络超时重试导致 ERP 中出现重复记账。

财务审计日志:基于物理 Trace 的不可篡改审计追踪

记录每一个审批决策的决策链条、推理 Prompt、工具响应与人工反馈,是满足上市公司外部审计合规的核心要求。

当企业面临外部审计时,必须能够说清楚每一笔费用的自动审批路径。我们的系统会对整个审批周期记录详实的不可篡改日志。

审计日志必须包含:

  • 报销单提交时的原始多模态输入快照。
  • 政策哨兵大模型匹配政策时的思维链 Trace(包括模型输入、输出和使用的 prompt 版本)。
  • 预算数据库接口返回的事务回滚及确认记录。
  • 人工确认时的批准批注和操作时间戳。

这些日志不仅是财务合规抽查的物理证据,也是系统升级时定位故障的关键依据。

度量指标:评估费用智能体的经济价值与准确率

为了持续监控和优化费用审批智能体,我们建立了双层度量体系,涵盖技术精确度指标与核心财务业务指标。

1. 技术精确度指标

  • 票据解析准确率(receipt_parse_accuracy):模型正确识别发票金额、税号及类别的比例,目标值应大于 98%。
  • 政策匹配精度(policy_match_precision):系统自动匹配出合规和违规项的准确率,避免漏判与误判。
  • 接口同步失败率(erp_sync_error_rate):智能体调用 ERP 进行数据记账时的 API 报错频率。

2. 核心财务业务指标

  • 平均审核时效(reimbursement_cycle_time):从员工提交报销到最终进入付款排队的总耗时。
  • 人工介入率(manual_escalation_rate):被系统分流到人工复核的报销单比例,用于评估系统的自动消化能力。
  • 审计合规差错率(audit_issue_rate):外部审计师抽查中发现的被系统遗漏的违规报销比例。

最小可上线版本(MVP)实施路径

财务系统的自动化必须遵循增量演进原则,先聚焦于高频标准的差旅报销校验,待运行稳定后再拓展至多系统联动的深度审计。

第一阶段(冷启动):

  • 仅支持差旅住宿费与交通费这两类高度标准化的费用报销。
  • 智能体只负责执行发票提取与差旅政策的超额比对,不进行自动通过,所有的决策最终都呈报给财务初审人员进行人工一键确认。
  • 开启 Trace ID 追踪,并将所有大模型的原始输出归档备查。

第二阶段(深水区):

  • 引入成本中心接口,执行实时的预算冻结与扣减。
  • 引入审批矩阵,对完全合规且在预算内的小额报销实施全自动流转。
  • 接入企业微信或 Slack,实现异常报销的一键补充提问。

通过这种循序渐进的迭代路径,企业能够以极低的试错成本逐步建立起对 AI 治理的信任。

生产环境常见坑与排错指南

忽略发票多税目合并、忽略重复报销识别以及直接授予 AI 自由审批权是大多数费用审批智能体项目失败的三大诱因。

1. 复杂发票包含多项不同税率的商品名细导致提取混乱

  • 常见现象:一张增值税专用发票上既包含了住宿费,又包含了餐饮费。初级 OCR 往往只能提取出最后的大数,导致智能体将其归为单一消费类别,从而套用了错误的政策限额。
  • 报错日志:
[ERROR] 2026-05-21T14:32:01.002Z - InconsistentCategoryException: Invoice category mismatch. Invoice total 1200.00 CNY cannot be mapped to travel rule rule-travel-accommodation-01 due to hidden dining charge (400.00 CNY).
  • 解决方案:多模态 Parser 必须在子项列表(Line Items)级别进行递归提取,将发票明细进行物理拆分,再分别匹配对应的政策条款。

2. 跨国汇率折算波动导致预算溢出报错

  • 常见现象:员工在海外出差提交了美元或欧元发票,由于智能体内部使用的汇率接口延迟,折算后的本币金额与财务入账时的汇率存在微小偏差,导致临界的预算扣减被系统报错弹回。
  • 报错日志:
[WARN] 2026-05-21T15:10:45.321Z - BudgetExceededWarning: Cost center CC-MKT-01 has remaining budget 100.00 CNY. Requested invoice amount 15.00 USD converted to 101.25 CNY (Exchange rate 6.75). Budget lock rejected.
  • 解决方案:在预算核算器中引入 3% 的汇率缓冲区(Exchange Buffer),或者要求 Agent 在读取预算时,强制以发起申请当天的中国银行官方收盘汇率作为硬判定标准。

方案对比

企业在实施 AI 费用审批时,需要在自研多智能体工作流与采购商业费控 AI 插件之间做出权衡。

对比维度XBSTACK 多智能体方案 (n8n + Python)传统财务费控系统商业 SaaS 智能体插件
业务逻辑灵活性极高,可随企业差旅政策更改随时微调 Prompt极低,规则变更需要复杂的 IT 系统重新部署中等,受限于 SaaS 供应商提供的配置界面
跨系统连接能力极强,可通过 Webhook 与底层 API 对接任何 ERP较强,通常只提供标准接口较弱,仅支持其生态内的合作伙伴系统
初始开发成本中等,需要开发人员编写 Schema 和对接 API极高,涉及漫长的采购与本地集成周期较低,按月度订阅即开即用
数据隐私隔离极高,完全运行在企业私有云或局域网内极高,属于传统的本地化软件部署较低,财务发票和敏感数据需上报至 SaaS 云端

常见问题解答

智能体如何处理纸质发票上手写备注被遮挡或模糊不清的情况?

当 Receipt Parser 提取图像时,会计算一个置信度得分(Confidence Score)。如果因为光线暗淡、手写字迹潦草或印章遮挡导致得分低于 85,智能体会自动在当前 Trace 中记录字段缺失异常,并不进行任何猜测性推理,而是将该单据直接分流到“补充材料”人工交互队列,要求员工重新拍照上传或提供补充说明。

在处理外币报销时,如何防范汇率欺诈行为?

为了防止员工故意在汇率剧烈波动期间通过延迟报销赚取汇差,系统强制规定:所有外币发票的本币折算金额,必须以发票开具日期(Invoice Date)当天的基准汇率进行物理换算,而非以员工提交报销单或智能体审核当天的汇率进行计算。这一规则被写入了政策校验引擎的底层物理函数中,大模型无法篡改该参数。

智能体如何判定“业务目的”是否真实合理?

大模型会结合员工的组织架构档案、同行人员名单以及该笔消费的发生地点,对 business_purpose 输入字段执行语义合理性分析。例如,如果一名开发人员在没有项目发布任务的周末,报销了一笔发生在非工作地点的宴请费用,且说明仅写着“加班沟通”,智能体的异常评分会显著飙升,提示审批人此处的业务关联性偏弱。

延伸阅读

生产化防守与安全风险控制

在将该智能体部署到真实生产环境时,小白建议必须硬编码以下物理防御机制,防止模型幻觉引发系统灾难:

  • 「权限隔离限制」:该 Agent 仅被赋予最小可行性 API 权限。所有写操作必须物理隔离在独立沙箱中进行,禁止赋予直接执行 SQL 的权限。
  • 「双重审批拦截」:对高危业务决策(如确认付款、删除文件、自动提交代码)强制接入 Human-in-the-loop 人机协同机制,非物理人类复核不可越权通过。
  • 「全面审计日志」:保留所有工具调用的入参、出参和模型的推理轨迹(Trace Log),在系统发生行为抖动时提供充足的对账凭证。
  • 「任务循环限额」:硬编码限制模型单次任务的最大循环轮次(如限制为 10 轮),防止模型在工具报错时陷入无限震荡死循环导致 Token 额度耗光。

喜欢这篇文章?
加入小白实验室的周刊

每周我都会分享最新的 AI 实战、产品构建心得以及程序员视角的投资笔记。不发废话,只发干货。已有 5000+ 开发者在此共同进化。

Comments