夜雨聆风学习资料网

ARTICLE · 1053953

人类在环智能体源码展示:企业报销工作流举例(附源码下载)

人类在环智能体源码展示:企业报销工作流举例(附源码下载)

报销这件事,看着简单:员工交单,财务审,打款。可一旦要做成自动化的智能体,难点就不在把流程跑起来,而在决定流程跑到哪一步必须停一下,等人。

我最近看了一篇讲 human-in-the-loop(人类在环)的开源示例,作者用一整套能跑起来的代码,演示了企业报销工作流。它没绕概念,反而把"人该在哪儿接手"摆到了台面上。对做 B 端业务的人来说,比框架本身更值得看的,是它拆流程的顺序。

先把报销拆成固定的三步

这个示例里的报销流程,被压成三个步骤,顺序是死的。

第一步,加载报销记录。员工在 OA 里提交报销,系统产生一条触发消息,工作流按单号把待处理的记录取出来。

第二步,自动审计。拿上一步的记录,按业务规则做一遍合规校验:示例里写的是单次金额不能超过 2500 元,再叠一系列规则,最后得出一个审计结果。

第三步,执行打款。也就是真正把钱付出去的那一步。

这三步看着平平无奇,但"立序"要立的,恰恰是这些不显眼的地方:一单报销由哪些字段构成、金额分几档、每一档对应谁审批、哪一步可以自动、哪一步必须留痕。顺序只是骨架,字段、档位和审批链才是肉。这些没定下来,后面的自动化就是空中楼阁。

顺序为什么重要?因为这三步里,前两步做错了,最坏是审错一单,还能改、能复核、能撤回;第三步一旦跑出去,钱就动了,要担责任。可修改、可复核、可撤回的先做,直接生效、要担责任的先立规矩——这是我看所有自动化流程的第一条。

所以在这个示例里,打款之前被硬插进了一道闸门:工作流跑到第三步,不是直接付钱,而是先发起一次"人类在环"的交互,把报销记录和审计结果打包,推给管理员。

代行到审计和提醒为止

这道闸门在代码里怎么落,是这个示例最有价值的地方。

流程走到打款那一步,会主动停下来。停下来的同时,它把当前整个运行状态序列化成一串数据存起来,再把节点上的内存资源放掉。它不会挂着一个进程干等。

这一步看着是技术细节,放到业务里其实是常识:一张报销单的审批,可能要等半天、一天,甚至跨一个周末。如果流程一直占着资源等人,报销的量一上来,机器先撑不住。先停、先存、先放,等人回话,再在任意一个节点上把状态读回来,接着从断掉的地方往下跑。

顺带说一句,原文把实现分成了两种场景:一种是客户端和数据中心之间保持长连接、能做会话保持;另一种是不需要保持会话,架构就跟普通互联网应用一样。示例选的是后一种,因为它对基础设施要求低、适用面更广。对大多数中小企业来说,这个选择更现实——你不太可能为了一个审批动作,专门去维护一套常驻会话。

那 AI 代行的是哪一段?我把它归成三类结构化动作:

- 取单据、跑规则、比对金额,是结构化整理和校验; - 存状态、暂停、恢复、把待审的事件推给管理员,是流程辅助和提醒; - 需要的时候,用模型把审计结果和报销信息汇总成一段人话,方便人快速看懂。

但审批这个动作,不在代行范围里。管理员批还是拒,是唯一的放行信号,只有"同意"回来,流程才继续把款付出去。人工审批这道闸门,必须由人守。AI 能做的事越多,越要提前告诉它哪些能碰、哪些不能碰,否则它会很勤快,但勤快在你没让它干的地方。

这里有个容易被忽略的细节:闸门推给管理员的那条消息,得让人一眼能判断。报销记录、审计结论、命中了哪条规则、有没有特殊说明,最好在一屏里给全。人要是在手机上翻半天才看明白,这道闸门就成了新的堵点。人工审批不是把问题丢回给人,而是把判断需要的信息先替人备齐。

有一点值得说明:这里不是非接大模型不可。示例为了把"人类在环"讲清楚,核心步骤并没有接 LLM。真要接,也可以在征求反馈之前,让模型先把审计结果总结成人话;或者在反馈之后,用模型读懂管理员那句自然语言的回复,再决定下一步动作。接不接、接在哪一步,取决于那一段是不是真的需要模型,而不是为了显得先进。

谁放行,异常找谁

流程清楚了,剩下的问题就落回组织和人身上。

第一,要有明确的审批人。不能默认"系统会推给管理员"就完事,得指定这项业务的业务负责人:谁审、权限到哪一档金额、超过多少必须升级。

第二,要定拒绝和异常的处理。管理员拒了,接下来是退回提交人补材料,还是转线下复核?自动审计没通过的单子,是停在闸门前等人看,还是直接打回?这些得在流程图上写死,不能等上线了再想。

第三,要改的是值班、复核和交接,不是多买一个工具。加了这道闸门之后,签收待审事件、处理超时、留痕归档,都成了新的日常动作。失败时怎么停,比怎么跑更重要:读不到记录就停,规则不过就标出来,没人审批就挂起提醒,而不是硬跑。

我自己做国际货代和外贸的时候,用的是同一套切法:单据核验、规则比对、报价草稿可以让程序先做,但对外报价必须人工确认之后才能发出去。行业不同,边界是同一条。

收束

这个示例最该被记住的,不是它用了哪个框架,而是它把"人"放回了流程里正确的位置——不是最后擦屁股,而是在关键那一步上守闸门。

先把顺序立住,再让 AI 代行;代行到审计和提醒为止,放款和签字留给人。这就是先立序,再代行。

示例源码:https://github.com/bitsky-tech/bridgic-examples/blob/main/bridgic-examples/human_in_the_loop/reimbursement_automation.py

相关学习资料