上次给自家LLM出订单识别考试,作为出题人,我输了5次。今天聊聊这套考卷是怎么搭出来的。结论先放这儿:好题都是浪费纸。

随便找个人出题,第一反应都是从能跑通的案例开始。"250号运输箱来5箱"——运输箱250,5箱,通过。感觉很好,很安心。

打开网易新闻 查看精彩图片

但这是浪费分。模型很少在正常案例上翻车。真正会挂的,全是那些不正常的。

我的29道题是这样拆的:

  • 正常订单:4道
  • 不是订单的内容:6道(最大的一组)
  • 变更与取消:4道
  • 歧义题:5道
  • 错别字与极端简写:3道
  • 学习机制生效后的场景:7道

正常订单是最少的,故意的。

这套程序最怕的事故,是发出没人订的货

所以考卷应该优先瞄准这个事故,而不是别的。

250号运输箱的尺寸是多少?产品名有,数量有,但它不是订单,是个问题。

一个把"识别到产品名"当成"检测到订单"的程序,这时候就会直接叫车发货。所以我埋了六道这种题:询价的、查库存的、问物流的、打招呼的、要发票的。

变更和取消更阴险。

我订了5箱250号——请只发3箱。两个数字。只读前半段,这就是个完美订单。当成新订单处理,货就发了两遍。

不只是出难题,还要让数据本身变脏

原因之一:真实数据本来就这样。真实的产品目录里永远有近似孪生项。

拿一份干净目录跑考卷,结果是什么?全过。然后接上生产数据,直接崩。如果考卷过了但生产环境出事故,那不是模型的错,是考卷的错。

这套程序会学习。人类手动匹配过一次,它就记住了。"250"→运输箱250,以后全自动。

坦白说:我最初22道题里,学习场景一道都没有。"修一次以后全自动"是这套程序存在的理由,而我居然连一次都没测过这条路。后来补了7道题。

这7道题让我看到了吓人的东西。学习不只是便利功能——它可以是事故生成器。

陷阱一。程序已经学会"胶带=48mm"。然后来了这条:

按已学匹配直接执行,发出去的是48mm。客户说的是60。显式规格必须压过已学匹配。

陷阱。程序已经学会"250=运输箱"。然后来了这条:

250的尺寸是多少?

学得越多,程序越自信。拿这份自信把问题读成订单,就完了。学没学过,问题就是问题。

两道都过了。挺好。但如果我从来没写过这些题呢?它就会带着"没人知道能不能过"的状态上线。

考卷要是太客气,考卷就过了——出题人输了。