我把银行账单交给了一个小模型
我有大约 1,500 笔交易,完全不想一笔一笔手动分类。所以我搭了一套流程:让一个模型把它们全部分好,告诉我哪些它拿不准,我纠正之后它会记住。
最近我把九个月的银行记录搬进了 myqi,也就是我自己用的私人应用。大约 1,500 笔交易,加了密,只能在我自己的机器上读。页面上能看到流水和几张图表,但没有一个地方说得清这些钱到底花在哪了。
我试过的每一个记账应用,都要我自己动手做这一步,说实话这就是我每一个都没坚持用下去的原因。我不想再多一个地方去分类交易。我想要的是:它把每一笔都看一遍并做出判断,告诉我它有多确定,我不同意的时候记住我说的话。这个要求其实挺具体的,平常那些聊天模型并不是干这件事的合适工具。
另一种 AI
大家熟悉的模型都是写文字的(ChatGPT、Claude、Gemini)。同一个问题问五遍,可能得到五个不同的答案。我最后用的这个,TypeSafe 的 Jev,不一样。它什么都不写。你给它一样东西看,给它划好边界,它从里面选一个答案,再告诉你它有多确定。想自己看看的话,可以去 typesafe.ai。
所谓边界,就是它被允许给出的答案清单,以及每个答案是什么意思。对我的交易来说,是十六个类别,每个类别配一句话说明什么算在里面。杂货指超市。转账指在我自己的账户之间挪钱。Jev 只能从这个清单里选。它编不出第十七个类别,也没法用一段话来回答。要是哪个都不合适,它唯一能说的是“其他”,因为我把这一项也放进了清单。
回来的是它选的那一项,再加一个数字,表示它有多确定。如果一笔明显是超市,数字接近一。如果可能是两三种情况,数字就往下掉,这就是提醒我自己去看一眼的信号。同一笔交易再送一次,得到的还是同样的答案,因为它不是每次从头写,而是在选。
一开始这看起来像是降级。它不能聊天,不能解释自己,也写不了总结。但对于给 1,500 笔交易分类来说,这些都不重要,而这些限制恰恰是它好用的地方。
它给不出清单之外的答案,所以我永远不用去收拾它编出来的东西。它又快又便宜,我可以把每一笔交易都跑一遍,而不是抽样:1,500 笔全部跑完不到六秒,花了几美分。
每个答案还带一个数字,这个数字是 Jev 定的,不是我。这是 Jev 在表达它有多确定。0.96 的意思是“我几乎可以肯定这是超市”。0.5 的意思是“这可能是好几种情况之一”。这些数字我不碰。我唯一决定的是分界线。我定在 0.8:Jev 的数字在 0.8 或以上,我就采用它的答案。低于 0.8,这一笔就进入一个清单,等我自己看。想多看几笔,就把线抬高。更信任它了,就把线放低。
所以,什么时候问、拿到答案之后怎么办,是应用决定的。Jev 只负责回答。正是这个分工,让我放心把自己的钱交给它。
真正用起来
每一笔交易,Jev 拿到五样东西:
- 交易描述
- 金额
- 钱是进来还是出去
- 来自哪家银行
- 日期
它永远看不到账号、账户名和余额。然后它对每一笔回答五个问题:
- 这属于我十六个类别里的哪一个?
- 这是不是我自己账户之间的转账?
- 这是不是一笔固定的周期性支出?
- 这是必需还是想要?
- 这一笔值不值得多看一眼?
第一次运行,1,508 笔交易不到六秒就跑完了。其中 1,144 笔 Jev 很确定,也就是数字在 0.8 以上。117 笔它拿不准,还有 13 笔它标记为“意外”。被标记为意外的那些,是一个从没见过我预算的东西给出的合理提醒:几笔一次性的大额消费,两三笔大额转账,一次旅行。
它拿不准的那 117 笔有一个共同点:描述里没什么信息。有的只是一个支付应用的名字,看不出背后是哪家店。有的是只有一串参考号的转账。我自己看,也看不出来。所以 Jev 不是在这些上面瞎猜。它是把这些交给我,而且交给我的正是该交的那些。在 myqi 里,这些交易会排在“待复核”清单的最前面,我只在这个清单上花时间。剩下的 1,400 笔,我不看。
我是怎么持续改进 Jev 的判断标准的
这是我最在意的部分。Jev 不会自己学习。它依据的是一套由我掌控的判断标准:十六条类别定义,加上我在每一笔交易上给过的所有答案。Jev 判断错了,解决办法从来不是“训练模型”,而是“把标准写得更清楚”。我有两种办法。
第一种是直接回答某一笔。当我改掉一笔交易的类别,会发生三件事:
- 这一笔保留我的答案。
- 同一个商家的其他交易也都改成我的答案,以后新出现的也一样。我只用说一次。
- 页面会确认。比如“已保存:杂货。该商家的另外 59 笔现在都跟着这个答案。”
这个答案也会加进判断标准。下次 Jev 再看到这个商家的任何一笔,“这家是餐饮”就明明白白写在它依据的东西里。
第二种是改写定义。早期我发现退款被归成了收入,因为我给收入下的定义里写了“退款”。这不是 Jev 的错,它只是照我写的做。我改了一句话,让退款沿用商家原本的类别,然后点“全部重判”。Jev 用新标准把每一笔重新过了一遍,旧答案留着,我能看到哪些变了。
不管哪种方式,Jev 永远只依据最新版本。页面会记分,现在 Jev 和我教过它的东西一致率是 99%。就是这个数字让这件事值得。1,500 笔交易里,我只需要真正花心思看那 1% 确实需要我的。
如果 Jev 判断对了,我想表个态,有一个“没错”按钮,做的是同样三件事,只是不改类别。不管哪种,点一下就处理完整个商家。纠正会在后台排队,所以我可以在手机上一口气过三十笔,不用每一笔都等。
Jev 可以怎么用在企业里
我的银行账单是 1,500 行,一个人在核对。很多企业有的是同一件事的放大版,通常长得像记账。有人每周花好几个小时把订单、数量、发货录进表格,不是因为录入本身有什么用,而是因为只有这样,对不上的时候才能发现。大多数时候什么问题都没有,你做了那么多工作,就为了那几行有问题的。
拿一家小型服装厂来说。订单通过邮件进来。有人把它录进在制品表,做一张裁剪单,交给裁剪厂。裁剪厂送回一份实际裁剪报告。有人把报告和裁剪单对一遍,更新数量,给缝制厂开采购单,再记录发了什么货。同样的数字要录进五六个表格,就为了对不上的时候总有人能发现。
这里的每一次核对,都是一个只有几个备选答案的问题:
- 这封邮件是新订单、改单,还是取消?
- 裁剪报告上的这一行,属不属于这张裁剪单?
- 报告的总数和裁剪单对得上吗?对得上、数量不同、尺码不同,还是日期不同。
- 装箱单上的这一箱,对应得上哪一行订单吗?
邮件或报告一到,Jev 就会回答这些问题,并附上一个表示确定程度的数字。它确定的,自动记录。它拿不准的,以及对不上的,进入一个短清单交给老板。老板回答一条,比如“这家裁剪厂一向把尺码分行写,这不算对不上”,这句话就进了判断标准,这家裁剪厂下一份报告就会带着这条来读。什么算对不上,仍然是老板说了算。只是不用再重新录一遍数字,来确认到底有没有对不上。
这对企业意味着什么
我聊过的每一个老板都说同一句话:最希望多一点的东西,是时间。而他们丢掉的时间,大多花在了翻噪音上。录那些本来就没问题的行。读那些本来就对得上的报告。在一堆没问题的东西里找那一个有问题的。
这件事把它反过来了。你跳过那堆干草,直接拿到针。分拣的活模型来做,到你手上的只有那份真正需要做决定的短清单。第一次不对,你改一次,改动进了判断标准,以后所有类似的行都跟着对。清单一周比一周短。
从某个人每周已经在手动做的那一项核对开始。写下他做这件事时真正在问的问题,以及这个问题可能有的几个答案。让模型把所有的都做一遍,你只看它拿不准的那些。然后把省下来的时间,花在真正能推动生意的事上,或者你喜欢的事上。时间本来就是用来干这个的。