上次我作为出题人,给自家大模型做了一次订单识别考试,结果以5倍差距惨败。今天聊聊这份考卷是怎么设计出来的。
先说结论:好题目都是浪费纸。
随便找个人出测试题,第一反应都是从正常案例入手。"250号运输箱来5箱"——模型识别出运输箱250号、5箱,通过。感觉良好,令人安心。
但这些都是白送的分。模型很少在正常案例上翻车。真正会出问题的是那些"不正常"的情况。
29道题的分布:正常订单最少
我出的29道题是这样拆分的:
- 正常订单:4道
- 不是订单的内容:6道(最大的一组)
- 变更与取消:4道
- 歧义表达:5道
- 错别字与极端简写:3道
- 学习机制生效后的场景:7道
正常订单是最少的一组,这是故意的。
这套程序最怕的事故是发出没人订购的货。所以考试就应该围绕这个事故来设计,而不是让模型在标准答案上刷分。
陷阱一:产品名出现≠订单
"250号运输箱的尺寸是多少?"——产品名有,数量也有,但它不是订单,是个问题。
如果程序把"识别到产品名"当作"检测到订单",货车当场就发走了。所以我埋了6道这样的题:询价的、查库存的、问物流的、打招呼的、要发票的。
陷阱二:变更和取消更阴险
"我订了5箱250号,请只发3箱"——两个数字。只读前半句,这就是个完美订单。当成新订单处理,货就发了两遍。
不只是题目要难,数据本身也得脏。
原因很简单:真实数据本来就长这样。真实产品目录里永远有近似重复的条目。
拿一份干净目录跑测试,结果是什么?全过。然后接上生产数据,直接崩。如果考试通过了但生产环境出事故,那不是模型的错,是考试的错。
陷阱三:学习机制本身会制造事故
这套程序是会学习的。人工确认过一次匹配,它就记住了。"250"→运输箱250号,以后自动匹配。
坦白说:我前22道题里完全没有学习场景。"改一次以后自动生效"是这个程序存在的意义,而我居然一次都没测过这条路径。后来补了7道题。
这7道题让我看到了吓人的东西——学习不只是便利功能,它可能是事故生成器。
陷阱A:程序已经学会"胶带=48mm"。这时来了一条新消息:
"胶带要60mm的"
直接套用学习结果,发出去的是48mm。客户说的是60。明确规格必须压过学习结果。
陷阱B:程序已经学会"250=运输箱"。然后来了一句:
"250的尺寸是多少?"
学得越多,程序越自信。用这份自信把问题当成订单读,就完了。不管学没学过,问题就是问题。
这两道题它都过了。但如果我从来没写过这些题呢?它就会直接上线,没人知道它能不能过。
考试题出得太客气,考试就会通过——然后事故在真实世界里等你。
热门跟贴