1. 项目缘起:为什么一家千人集团决定把财务流程交给AI
1.1 一个真实的痛点场景
先交代一下背景。这家集团大概1000人规模,旗下有10家独立法人主体,业务横跨制造、贸易和服务三个板块。财务共享中心一共22个人,每个月要处理的事情包括:10家主体的费用报销审核、供应商发票入账、银行流水对账、往来款核销、月度结账前的凭证整理,以及给管理层出的经营分析报表。
听起来不算特别夸张对吧?但问题在于,10家主体的账套是分开的,科目体系有细微差异,报销制度也不完全一样。一个财务人员上午在处理A公司的差旅报销,下午切到B公司看供应商发票,中间还要接业务部门的电话催付款。这种频繁的上下文切换,导致两个后果:一是效率低,二是出错率高。
我们做过一个统计,一个熟练的应付会计,处理一张标准发票从收到到入账,平均需要4分半钟。其中真正需要人判断的时间不到1分钟,剩下的3分半全花在:打开邮箱下载附件、核对发票信息、去ERP里查供应商编码、录入凭证、上传影像、点提交。这些动作本身不难,但量大、重复、容易疲劳。
所以当老板问“能不能用AI把这些人解放出来”的时候,我的第一反应不是兴奋,而是警惕。因为财务这个领域,容错率极低。一笔分录做错,可能影响报表,可能影响税务申报,可能影响审计意见。AI可以犯错,但财务不能。
1.2 为什么是“智能体”而不是“自动化脚本”
很多人一听到AI做财务,第一反应是RPA(机器人流程自动化)。我们一开始也评估过RPA。RPA的逻辑是:模拟人的鼠标键盘操作,把重复动作录下来,然后自动回放。这东西在规则极其稳定的场景下确实好用,比如每天固定时间从某个系统导出报表然后发邮件。
但财务流程的麻烦在于,它不完全是“稳定规则”。举个例子:一张发票进来,RPA可以识别发票号码和金额,但它没法判断“这张发票对应的采购合同是否已经走完审批流程”“供应商的银行账号和合同上的是否一致”“这笔费用的预算科目有没有超支”。这些判断需要理解上下文,需要跨系统查数据,需要在模糊情况下做决策。
这就是我们选择“智能体”而不是传统自动化的核心原因。智能体的本质是:它有一个目标(比如“完成这张发票的入账”),然后自己决定需要调用哪些工具、查哪些数据、走哪些步骤。它不是在回放固定动作,而是在根据当前情况动态规划。
打个比方:RPA像是一个只会走固定路线的公交车司机,路线变了就懵了。智能体像是一个出租车司机,你告诉他目的地,他自己看路况决定怎么走。财务场景里,“路况”是经常变的——供应商信息更新了、科目调整了、审批流程改了——所以我们需要后者。
1.3 六个流程的优先级排序
我们最终选了六个流程交给AI,但不是同时上的。排序逻辑很简单:先做“高频、规则相对清晰、出错后果可控”的,再做“低频、判断复杂、出错后果严重”的。
| 优先级 | 流程名称 | 月均处理量 | 规则清晰度 | 出错影响 | 上线顺序 |
|---|---|---|---|---|---|
| P0 | 费用报销初审 | 约3200单 | 高 | 低(有人工复核) | 第一批 |
| P0 | 供应商发票入账 | 约1800张 | 高 | 中(影响应付) | 第一批 |
| P1 | 银行流水对账 | 约4500条 | 中 | 中(影响资金) | 第二批 |
| P1 | 往来款核销 | 约900笔 | 中 | 高(影响报表) | 第二批 |
| P2 | 月度结账凭证整理 | 约600张 | 低 | 高(影响结账) | 第三批 |
| P2 | 经营分析报表生成 | 每月10份 | 低 | 中(影响决策) | 第三批 |
这个排序不是拍脑袋定的。P0级别的流程,特点是“量大、规则明确、即使AI判断错了,后面还有人工复核兜底”。P2级别的流程,要么是规则太模糊(比如“这笔费用该不该预提”),要么是出错后果太严重(比如结账凭证),所以必须放在后面,等前面的流程跑稳了、团队对AI的信任建立起来了,再逐步推进。
实操心得:不要一上来就啃硬骨头。先找一个“AI做错了也不会出大事”的场景跑通闭环,让业务方看到效果,建立信任。信任这个东西,在财务领域比技术本身还重要。
2. 技术架构:六个流程背后的统一智能体平台
2.1 为什么没有用现成的SaaS财务AI产品
市面上确实有一些财务AI产品,主打“开箱即用”。我们评估了三家,最后都放弃了。原因有三个:
第一,数据安全。财务数据是企业的核心敏感数据,走外部SaaS意味着数据要出内网。虽然厂商都说自己加密做得好,但我们的安全团队不接受。
第二,定制化程度不够。每家企业的科目体系、审批流程、报销制度都不一样。SaaS产品为了通用性,往往把规则做得很死,改起来很麻烦。我们的10家主体本身就有差异,需要一套能灵活配置的引擎。
第三,成本。按调用量计费的模式,在初期看起来便宜,但量大了之后成本上升很快。我们算过一笔账,如果按某厂商的报价,月处理5000单的费用大概是2万左右,一年24万。而自建平台的一次性投入虽然高一些,但长期来看更划算,而且资产是自己的。
所以最终决定:自建。但不是从零造轮子,而是基于开源LLM和Agent框架来搭。
2.2 整体架构分层
我们的架构大概分四层,从下往上:
第一层:基础设施层。包括GPU服务器(我们用了2台A100 80G,跑本地模型)、向量数据库(用于存储历史凭证和制度文档)、关系型数据库(存业务数据和日志)。这一层没什么好说的,就是保证算力和存储够用。
第二层:模型层。我们没有完全依赖某一个模型,而是做了“大小模型配合”。大模型(我们用的是本地部署的70B级别模型)负责需要深度理解的场景,比如判断一张发票的费用类型、理解一段报销说明的语义。小模型(7B级别或者更小的专用模型)负责高频、简单的任务,比如发票OCR后的字段提取、金额校验。这样做的原因是:大模型效果好但推理慢、成本高,小模型快但能力有限。财务场景里,80%的任务其实是简单的,只有20%需要大模型。
第三层:智能体层。这是核心。每个财务流程对应一个“智能体”,但底层共享一套工具库和记忆机制。工具库包括:ERP查询接口、发票查验接口、银行流水获取接口、制度文档检索接口等。记忆机制包括:短期记忆(当前会话的上下文)和长期记忆(历史处理记录、用户反馈)。
第四层:应用层。财务人员看到的界面。我们没有做一个全新的系统,而是在现有的OA和ERP里嵌入了AI助手。财务人员可以在原来的工作流里直接看到AI的处理结果,需要人工介入的时候,AI会给出建议和依据。
2.3 智能体的核心工作循环
每个财务智能体的工作逻辑,本质上是一个“感知-规划-执行-反思”的循环。我用供应商发票入账这个流程来举例说明:
感知阶段:智能体收到一张发票(可能是邮件附件、可能是扫描件、可能是系统推送)。它先调用OCR工具提取关键字段:发票号码、开票日期、金额、税额、供应商名称、商品明细。
规划阶段:智能体根据提取的信息,决定下一步要做什么。比如:供应商名称在ERP里有没有?如果没有,需要先走供应商建档流程。如果有,查一下这个供应商的付款条件是什么?合同编号能不能匹配上?这笔采购有没有对应的入库单?
执行阶段:智能体调用相应的工具去查数据、做校验、生成凭证草稿。如果所有校验都通过,就提交给人工复核。如果有异常(比如金额和合同不一致),就标记出来,附上异常说明,转人工处理。
反思阶段:人工复核的结果会反馈给智能体。如果人工修改了AI的判断,智能体会记录这个修改,并在后续类似场景中调整自己的行为。这就是“从反馈中学习”的机制。
注意事项:反思机制一定要做,但不要做得太激进。我们一开始让智能体自动学习人工修改,结果发现有些修改是特殊情况(比如某个供应商临时改了账号),如果智能体把这个当成通用规则学进去,反而会出错。后来我们改成了“人工确认后才更新规则”,稳了很多。
2.4 工具调用的安全边界
财务智能体最危险的地方在于:它有能力调用真实的业务系统接口。如果它判断错了,可能会生成错误的付款指令、修改错误的科目、甚至删除数据。所以我们在工具调用上做了三层防护:
第一层:权限隔离。智能体调用ERP接口时,用的是专门的“AI账号”,这个账号只有“读”和“创建草稿”的权限,没有“过账”和“付款”的权限。所有最终操作必须由人工确认。
第二层:操作白名单。智能体只能调用预先注册的工具,不能自己写SQL或者调用未授权的API。每个工具都有明确的输入输出格式和调用频率限制。
第三层:异常熔断。如果智能体在短时间内连续调用失败,或者出现了不符合预期的操作模式(比如突然大量查询某个供应商),系统会自动暂停该智能体的运行,并通知管理员。
这三层防护听起来简单,但实际落地的时候花了不少功夫。尤其是第二层,因为财务流程经常需要临时查一些数据,如果白名单太严,智能体就干不了活;如果太松,又有风险。我们的做法是:先按最小权限原则配置,然后根据实际运行中遇到的“智能体说它需要但没权限”的情况,逐个评估后添加。
3. 六个流程的实操拆解
3.1 费用报销初审:从“人眼看”到“AI预审+人复核”
费用报销是我们第一个上线的流程,也是效果最明显的。原来的流程是:员工在OA提交报销单,附上发票影像,然后财务人员一张张看:发票真伪、金额对不对、费用类型选得对不对、有没有超标准、有没有重复报销。
上线AI之后,流程变成了:员工提交报销单,AI在后台自动做初审,几秒钟后给出结果。如果一切正常,直接流转到财务复核;如果有异常,AI会标注出来,并给出建议。
AI具体做了哪些检查?我列一下:
- 发票真伪查验:调用税务接口,验证发票号码和代码是否匹配。
- 重复报销检测:在历史报销记录里搜索相同的发票号码。
- 费用类型校验:根据发票的商品明细,判断员工选的费用类型是否合理。比如发票明细是“餐饮服务”,员工选的是“办公费”,AI会标记异常。
- 标准校验:比如差旅住宿费,不同职级有不同标准,AI会自动比对。
- 预算校验:查一下这个部门的年度预算余额,如果超了,标记出来。
这五项检查,原来一个熟练财务人员大概需要2-3分钟。AI做,平均8秒。而且AI不会疲劳,不会因为下午五点半急着下班就草草看一眼。
但这里有一个关键设计:AI不做最终决定。AI的输出是“建议通过”或“建议人工复核”,最终点“通过”的还是人。这样做有两个好处:一是责任清晰,二是财务人员有掌控感。
实操心得:不要试图让AI完全替代人。至少在初期,一定要保留人工确认环节。这不仅是风险控制的需要,也是让财务团队接受AI的关键。人需要感觉到“最终决定权在我手里”,才会愿意用这个工具。
3.2 供应商发票入账:跨系统数据匹配的难点
供应商发票入账比费用报销复杂,因为它涉及跨系统数据匹配。一张发票要入账,需要匹配:供应商主数据(ERP)、采购合同(合同系统)、入库单(WMS)、付款条件(ERP)。
我们遇到的第一个坑是:供应商名称不一致。发票上写的是“XX科技有限公司”,ERP里存的是“XX科技股份有限公司”,合同上写的是“XX科技”。这三个名字指向同一个供应商,但字符串不一样。AI如果只做精确匹配,就会认为找不到供应商。
解决方案是:建了一个供应商别名库。AI在匹配时,先做精确匹配,如果失败,就查别名库,如果还失败,就用模糊匹配算法(我们用的是编辑距离+语义相似度),给出几个候选让财务人员确认。确认之后,这个别名关系会被记录下来,下次就能直接匹配了。
第二个坑是:入库单和发票的对应关系。有时候一张入库单对应多张发票,有时候一张发票对应多张入库单。AI需要理解这种多对多的关系。我们的做法是:让AI先按金额和日期做初步匹配,然后计算匹配度,如果匹配度低于阈值,就转人工。
第三个坑是:部分发票有“暂估”情况。就是货到了、入库了,但发票还没到。这时候需要先做暂估入账,等发票到了再冲回。这个逻辑AI一开始理解不了,因为它看到的只是“有一张入库单没有对应发票”。后来我们在提示词里明确写了暂估的处理规则,并且给AI提供了历史暂估凭证作为参考,它才慢慢学会。
这个流程上线后,单张发票的处理时间从4分半降到了1分半左右。节省的时间主要是在“查数据”和“录凭证”上,判断环节还是需要人,但人只需要看AI整理好的信息,不用自己去各个系统里翻。
3.3 银行流水对账:从“逐条勾对”到“AI批量匹配”
银行流水对账是财务共享中心最枯燥的工作之一。10家主体,每个月加起来大概4500条流水。原来的做法是:导出银行流水,导出ERP里的银行日记账,然后一条条勾对。对上的打勾,对不上的标记出来查原因。
这个工作的难点在于:银行流水和ERP记录的描述方式不一样。比如银行流水写的是“转账收入-XX公司”,ERP里写的是“应收账款-XX公司-货款”。AI需要理解这两条记录说的是同一件事。
我们训练AI的方式是:给它看了过去半年的对账记录,让它学习“什么样的银行流水描述对应什么样的ERP摘要”。同时,我们建了一个规则库,把常见的对应关系写进去,比如“转账收入”通常对应“应收账款”或“预收账款”,“手续费”对应“财务费用-手续费”。
AI对账的准确率,我们实测下来大概在92%左右。剩下的8%主要是几种情况:一是银行流水描述太模糊(比如只写了“转账”没写对方名称),二是ERP记录有误,三是确实存在未达账项。
对于AI对不上的,它会自动分类:如果是“疑似未达账项”,就标记出来让财务人员确认;如果是“描述模糊”,就给出几个可能的匹配项让财务人员选;如果是“ERP记录异常”,就提示财务人员去查ERP。
注意事项:对账这个场景,AI的准确率不需要做到100%,但一定要做到“AI对不上的,人能快速对上”。我们的设计是:AI把能对上的都对好,把对不上的整理成一个清晰的列表,附上AI的判断依据。财务人员只需要处理这个列表,工作量从4500条降到了大概300条。
3.4 往来款核销:最需要“理解上下文”的流程
往来款核销是我们做的六个流程里,技术难度最高的一个。因为它需要理解“这笔款是付的哪笔合同”“这个预付款对应的是哪个项目”“这个保证金该不该退”。
举个例子:A公司收到一笔50万的款,银行流水摘要写的是“货款”。但A公司同时有3个客户,每个客户都有多笔应收。这50万到底是哪个客户的哪笔应收?AI需要去查:最近有没有哪个客户发过付款通知?有没有哪个合同的付款条件刚好是50万?有没有哪个客户的应收余额刚好接近50万?
这个判断过程,本质上是一个“多因素加权决策”。我们给AI的提示词里,明确列出了它需要考虑的因素:金额匹配度、时间接近度、客户历史付款习惯、合同付款条件、业务部门的备注信息。AI会综合这些因素,给出一个“最可能的匹配”和“置信度”。
如果置信度高于90%,AI直接建议核销;如果在70%-90%之间,AI给出2-3个候选让财务人员选;如果低于70%,AI转人工,但会附上它查到的所有相关信息,方便财务人员判断。
这个流程上线后,核销的准确率从人工的95%左右,提升到了AI辅助下的98%左右。提升的原因不是AI比人聪明,而是AI不会漏掉信息。人可能会忘记查某个合同,但AI每次都会把所有相关因素查一遍。
3.5 月度结账凭证整理:AI做“粗活”,人做“细活”
月度结账前的凭证整理,包括:计提折旧、摊销费用、结转成本、计提税金等。这些凭证的特点是:规则相对固定,但涉及判断(比如折旧年限的变更、摊销方法的调整)。
我们的做法是:AI负责生成凭证草稿,人负责审核和调整。AI会根据预设的规则(比如“固定资产按月计提折旧”“长期待摊费用按36个月摊销”),自动生成凭证。如果遇到规则之外的情况(比如某个资产中途报废了),AI会标记出来,转人工处理。
这个流程的难点不在于技术,而在于“规则维护”。因为会计准则和公司政策会变,AI的规则库需要定期更新。我们的做法是:每个季度由财务经理review一次规则库,把新的政策变化更新进去。同时,AI每次生成凭证后,如果人工做了修改,修改原因会被记录下来,作为规则优化的依据。
3.6 经营分析报表生成:从“手工拼Excel”到“AI自动生成初稿”
经营分析报表是我们最后上线的一个流程,也是争议最大的一个。因为报表不只是数字,还有分析。AI能生成数字,但能生成有价值的分析吗?
我们的答案是:AI可以生成“描述性分析”,但“洞察性分析”还是需要人。具体来说,AI做的是:从各个系统里取数、计算同比环比、生成图表、写一段描述性的文字(比如“本月收入较上月增长12%,主要来自A业务板块”)。但“为什么增长”“这个增长是否可持续”“下一步该怎么做”,这些还是由财务分析师来写。
这个流程上线后,报表的生成时间从原来的2天缩短到了半天。财务分析师的时间从“拼Excel”变成了“想洞察”,工作质量反而提高了。
4. 踩过的坑与排查技巧实录
4.1 智能体“幻觉”在财务场景的三种表现
LLM的“幻觉”问题在财务场景特别危险。我们遇到的幻觉主要有三种:
第一种:编造数据。有一次AI在生成分析报表时,写了一句“本月毛利率为35.2%”,但实际上系统里的数据是32.5%。AI把数字记错了。原因是它在处理多个数据源时,混淆了不同月份的数据。
第二种:错误归因。AI在分析收入增长时,说“主要来自新客户XX公司的贡献”,但实际上XX公司是老客户,只是这个月订单量增加了。AI把“订单量增加”错误归因成了“新客户”。
第三种:遗漏关键信息。AI在生成凭证时,漏掉了一个附注说明,导致凭证信息不完整。
针对这三种幻觉,我们的解决方案是:
- 对于数据类幻觉:所有AI生成的数字,必须附带数据来源和取数时间。财务人员可以一键追溯到原始数据。
- 对于归因类幻觉:AI的分析结论必须标注“置信度”,并且提供支撑这个结论的数据点。如果置信度低,财务人员需要人工复核。
- 对于遗漏类幻觉:建立“完整性检查清单”,AI生成的内容必须逐项对照清单,缺一项就标记出来。
实操心得:不要试图消除幻觉,而是要让幻觉“可见”。财务人员不怕AI犯错,怕的是AI犯了错但看不出来。只要每个结论都能追溯、每个数字都有来源,财务人员就能快速判断AI靠不靠谱。
4.2 工具调用失败的常见原因与处理
智能体在调用工具时,失败是常态。我们统计了一下,工具调用失败的原因大概有这几种:
| 失败类型 | 占比 | 典型原因 | 处理方式 |
|---|---|---|---|
| 接口超时 | 35% | ERP系统响应慢 | 重试3次,间隔递增 |
| 数据格式不符 | 25% | 返回的JSON字段缺失 | 记录日志,转人工 |
| 权限不足 | 20% | AI账号没有某个接口权限 | 通知管理员添加权限 |
| 业务规则冲突 | 15% | 比如供应商已停用 | 标记异常,转人工 |
| 其他 | 5% | 网络抖动等 | 重试 |
这里重点说一下“数据格式不符”。ERP系统返回的数据,有时候会因为各种原因缺字段。比如查供应商信息,正常应该返回名称、税号、银行账号,但有时候银行账号是空的。AI如果直接拿这个空值去生成付款指令,就会出问题。
我们的做法是:在每个工具调用的返回处理里,加一个“必填字段校验”。如果必填字段缺失,AI不会继续往下走,而是标记为“数据不完整”,转人工补充。
4.3 财务人员的接受度问题
技术问题好解决,人的问题难解决。我们上线AI之后,遇到了几种典型的抵触情绪:
第一种:“AI会取代我。”这是最普遍的担忧。我们的应对方式是:明确告诉团队,AI是来“减少重复劳动”的,不是来“替代人”的。而且我们做了一个动作:把AI节省下来的时间,用于让财务人员去做更有价值的事,比如业务分析、流程优化。没有人因为AI上线被裁员。
第二种:“AI不靠谱。”有些老财务人员,做了十几年账,对自己的判断很自信,不相信AI。我们的应对方式是:让AI先做“辅助”,不做“决策”。AI的输出只是建议,最终判断还是人做。而且我们鼓励财务人员“挑战AI”——如果AI判断错了,财务人员可以标记出来,我们会分析原因并优化。
第三种:“用不习惯。”有些财务人员习惯了原来的操作方式,觉得用AI反而麻烦。我们的应对方式是:把AI嵌入到他们原来的工作流里,不改变他们的操作习惯。比如原来在OA里点“审核”,现在还是点“审核”,只是旁边多了一个AI的建议框。
实操心得:推动AI落地,技术只占30%,70%是组织和人。一定要让财务团队参与到AI的设计和优化中来,让他们感觉“这是我们自己的工具”,而不是“上面派来的监控”。
4.4 性能优化的几个关键点
智能体上线初期,响应速度很慢。一张发票的处理时间,从AI开始处理到给出结果,平均要40秒。财务人员等得不耐烦。
我们做了几项优化:
第一,缓存常用数据。供应商信息、科目表、预算数据这些变化不频繁的数据,缓存在本地,不用每次都查ERP。这一项就把平均处理时间降到了25秒。
第二,并行调用。原来AI是串行调用工具:先查供应商,再查合同,再查入库单。后来改成并行:同时查供应商、合同、入库单,然后汇总。这一项降到了15秒。
第三,小模型预处理。发票OCR后的字段提取,原来用大模型做,后来换成了专用的小模型,速度快了很多。这一项降到了8秒。
第四,异步处理。对于不需要实时返回的任务(比如报表生成),改成异步:AI在后台慢慢跑,跑完了通知财务人员。这样财务人员不用等,可以去做别的事。
最终,费用报销初审的平均处理时间从40秒降到了6秒左右。这个速度,财务人员基本感觉不到等待。
5. 上线后的效果与持续优化
5.1 量化效果
上线6个月后,我们做了一次复盘。几个关键数据:
- 费用报销初审:月均处理3200单,AI自动通过率78%,人工复核时间从平均2.5分钟/单降到0.8分钟/单。
- 供应商发票入账:月均处理1800张,AI自动匹配率85%,单张处理时间从4.5分钟降到1.5分钟。
- 银行流水对账:月均4500条,AI自动匹配率92%,人工处理量从4500条降到约360条。
- 往来款核销:月均900笔,AI辅助核销率88%,准确率从95%提升到98%。
- 月度结账凭证:月均600张,AI生成草稿率95%,人工只需审核和调整。
- 经营分析报表:每月10份,生成时间从2天缩短到0.5天。
整体算下来,财务共享中心22个人,相当于节省了大概6-7个人的工作量。但我们没有裁员,而是把这部分人力转移到了业务财务和数据分析上。
5.2 持续优化的机制
AI上线不是终点,而是起点。我们建立了一个“周复盘、月优化”的机制:
每周,财务团队会review AI处理错误的案例,分析原因。如果是规则问题,就更新规则库;如果是模型问题,就补充训练数据;如果是工具问题,就优化接口。
每月,我们会看一次整体数据:AI的自动通过率有没有提升?人工干预率有没有下降?响应时间有没有变化?然后根据数据调整优化方向。
这个机制听起来简单,但坚持下来不容易。我们的做法是:把AI优化纳入财务团队的KPI,让每个人都有动力去发现问题和提出改进建议。
5.3 下一步的扩展方向
目前我们正在做几件事:
第一,把智能体扩展到更多流程。比如税务申报、资金计划、预算编制。这些流程的复杂度更高,但我们已经有了前面的经验积累。
第二,做“多智能体协作”。现在的智能体是各管一摊,费用报销的智能体不管发票入账的事。未来我们希望它们能协作,比如费用报销的智能体发现一张发票有问题,可以自动通知发票入账的智能体去核查。
第三,做“主动式智能体”。现在的智能体是“你给它任务,它才干活”。未来我们希望它能主动发现问题,比如“这个供应商的付款条件快到期了,该安排付款了”“这个科目的余额异常,需要关注”。
这些方向都在探索中,还没有完全落地。但方向是明确的:从“辅助人”到“增强人”,最终让财务人员从重复劳动中彻底解放出来,去做真正需要人类判断力的事。
最后分享一个小技巧:如果你也在考虑上财务智能体,建议先从“发票OCR+费用报销初审”这个场景切入。原因有三:一是这个场景量大,效果容易量化;二是这个场景出错后果可控,有人工复核兜底;三是这个场景涉及的技术栈相对简单,不需要复杂的跨系统集成。跑通这个场景之后,再逐步扩展到其他流程,团队和技术都会更有信心。