ARTICLE · 1293218
我给 AI 立规矩 -水利ai智能审查软件
同一个大模型,裸着问和立好规矩问,差多少
这句话,是我从一次实验记录里原样抄下来的:
本工程为Ⅲ等土石坝,规范规定坝坡抗滑稳定最小安全系数为:正常运用条件下不小于 1.20;非常运用条件Ⅰ不小于 1.10;非常运用条件Ⅱ不小于 1.05。
这句话是错的。
真实值是 1.30、1.20、1.10。
说这句话的,是一个通用大模型。它没有骗我,它是真的相信——它把三个数,每一个都往下压了一档。
然后它回过头看报告里写的"非常运用条件下 1.15",按它自己编的标准,1.15 大于 1.10,合格。于是它只说了一句"表述不规范",就放过去了。
而同一段话里还有一个数:正常运用 1.2。真实标准 1.3,差 0.1,实打实的违规。
它一个字没提。
那天我盯着屏幕想了很久。不是气它错,是在想:这个错,是怎么发生的?
一、我做了个笨实验
我想知道,差在哪一步。
于是准备了一份几百字的土石坝初步设计节选,故意埋了 5 处错:
· 2 处显眼错:错别字,"错施"应为"措施","函洞"应为"涵洞";
· 3 处隐蔽错:坝坡抗滑 1.2(规范要求 1.3)、非常运用 1.15(要求 1.2)、压实度 0.95(要求 0.96)。
然后,同一份文档、同一个底层模型,三种问法:
甲 · 裸问:把文字丢过去,"请找出以下文本中的错误"。什么提示都不给。
乙 · 只给类别:告诉它要查哪 15 类错(错别字、数据不规范、规范引用错误……),但不说任何标准的数值。
丙 · 走我的程序:不但给类别,还把规范里的具体数字写成判定规则——1.30、1.20、1.10、0.96,白纸黑字写在代码里。
结果:
问法 | 5 处错提到几处 | 判定正确几处 | 消耗 token |
甲 · 裸问 | 5 | 3 | 11,516 |
乙 · 只给类别 | 2 | 2 | 8,134 |
丙 · 走程序 | 5 | 5 | 12,044 |
先解释一下"抓到"和"判对"为什么不一样。
甲组确实提到了"1.2"和"1.15"这两个数字,所以按关键词算它"抓到了"。但你往下看它的结论——它编了一套低标准,然后宣布合格。提到了,不等于判对了。
乙组更干脆:3 处隐蔽错,一处没抓。它连"这里有个 1.2"都没说。
丙组 5 处全中,3 处隐蔽错一个不落。
同一个大脑。差别只有一样:有没有把规矩写死。
二、它为什么专门往宽松的方向错
这是我最想讲的一点。
一个通用模型被问"这份报告有什么错",它做的第一件事不是查规范,是回忆规范。
它没有一本规范放在手边可以翻。它有的是训练时读过的东西,压缩成的一堆统计倾向。
回忆会出错。而且错得有方向——往宽松的方向错。
因为它见过的报告里,通过的多、被毙的少。它学到的"常见值",天然偏向"能过关"的那一档。1.30 记成 1.20,1.20 记成 1.10,1.10 记成 1.05——每一次都刚好宽那么一点。
这一点宽松,在工程上就是出事和不出事的距离。
所以问题不是"这个模型不够聪明"。它很聪明,它写的审查意见比我工整。问题是:规范数字这种事,本来就不该交给"回忆"。
三、我给它立的第一条规矩:数字不许回忆
乙组那次实验说明得很清楚。
我告诉它"要查规范引用错误"这一类,它就知道要往这个方向看。它会说:"这里有个坝坡抗滑安全系数 1.2。"
但它不会说:"1.2 不够。"
因为它不知道标准是 1.3。它知道有这回事,不知道够不够。
所以第一条规矩:把阈值从模型脑子里拿出来,写进代码。
《碾压式土石坝设计规范》里,3 级坝正常运用不小于 1.30,非常运用Ⅰ不小于 1.20,非常运用Ⅱ不小于 1.10,防渗体压实度不小于 0.96——这几个数,不是我让模型去记的,是我写在判定规则里的。程序读到 1.2,直接跟 1.3 比,比完就报。
不"觉得",只比对。
这一步听起来很土。但 3 处隐蔽错,从 0 命中变成 3 命中,全靠这一步。
四、第二条规矩:查不到就说查不到
阈值只是第一层。更难的是——这条规范到底适不适用你这个工程。
举个我踩过的坑。
一份水闸安全评价报告,三十二万字。程序跑完,报了 10 条强制性条文违反。
我一条条核。有 8 条,全是《碾压式土石坝设计规范》——坝顶超高、防渗体顶部宽度、固结灌浆布置、灌浆压力。
一个水闸,哪来的坝顶超高?
根子在两个字:堤防。报告正文提到 45 次"堤防",因为这座闸就建在堤防上。程序一看,涉及堤防,把堤防工程适用的一整套规范搬了过来,连带把土石坝的强条也拖进来了。
它没有胡说。它只是把"提到了"当成了"就是"。
所以第二条规矩:判断"这是什么工程",只认工程等级表、设计说明书里明确写下的那一句。正文里出现的构件名——闸门、启闭机、压力钢管——一律不算数。 查不到明确的类型,就说查不到,宁可少报,不许硬套。
改完之后,那份报告的强条从 10 条降到 2 条。另一份闸的安全评价,从 3 条降到 0 条——消失的三条里,有一条要求它有"压力钢管"。
五、第三条规矩:每条结论都要能追回原文那一句
通用模型给你的一段意见,通常长这样:
第 6 章存在单位使用不规范的问题,建议统一。
哪一句?哪个数?它不说。你要核对,就得把第 6 章重读一遍。
这不是审查,这是给你派活。
所以我给它立了第三条规矩:每条意见必须带原文引用,而且这句引用必须能在文档里定位到。定位不到,就不许进正文。
定位不到的那些去哪了?不进正文,统一列到文末,标一句"以下 N 条未能在原文定位"。至少你知道哪些是要自己找的。
一条意见值不值钱,不取决于它说得多有道理,取决于你能不能在三秒钟内找到它在说哪句话。
六、第四条规矩:有一类错,不是"读"出来的,是"算"出来的
这条是我最想说的。
一份 14.2 万字的水利工程可行性研究报告,切成 18 个章节块。
在让模型看之前,程序先做了一件事:花 1,175 个字,抽了一张全景骨架——这份报告有哪几章、关键参数有哪些、图表编号到几号。
然后跑了一遍零 Token 的确定性扫描。不调模型,纯代码对账。
扫出 9 条。我挑几条你感受一下:
· "设计暴雨"在全文出现 4 次,数值分别是 37、3.3、5、3.4
· "灌溉面积"出现 4 次:37.88、36.1、33.5、37.88
· "渗透系数"出现 4 次:2.64、3.59、10、4.4
· "重现期"出现 2 次:5、3
· 术语混用:全文混着用"混凝土/砼"、"围护/围堰"、"边坡/岸坡"
· 悬空引用:正文引了表 1-5、表 4-3、表 5-4、表 7-3、表 12-5——这 5 张表在全文里根本不存在
这些错,你去问任何一个通用模型,它一条也报不出来。
不是它笨。是这类错根本不是"读"出来的。
你得把全文所有参数抽出来,按名字分组,一组一组比。这是数据库的活儿,不是阅读的活儿。你让一个人从头读到尾,读到第 150 页的时候,他也记不清第 30 页写的是 37 还是 3.4。
零 Token,纯代码,几秒钟。
跑完这一遍,才轮到模型上场:274 条原始发现,去重后 269 条,耗时 44.9 分钟,消耗 38.8 万 token。
七、说句公道话
写到这儿,容易写成一篇贬低同行的软文。我不想那样,也没必要。
通用模型强的地方,我认:
· 错别字、语句不通、明显的逻辑跳跃,它一眼就看出来,而且比我的规则库灵活。我的规则库只能抓我想到的,它能抓我没想到的。
· 写意见的笔头,它比我好看。同样一条问题,它写出来像专家,我写出来像检查表。
· 它每天都在变强。我的规则库得一条条人工维护,它的底子在自动涨。
我的程序弱的地方,我也认:
· 规则没覆盖的领域,它一样看不见。 规则库是死的,写一条才有一条。
· 模糊判断做不了。 护坡形式合不合理、堤线巧不巧、参数怎么取舍——这些还得工程师拍板。
· 269 条是"疑点",不是"结论"。 最后签字的是人,不是程序。
它不是来取代通用模型的,它是在通用模型外面,套了一层不许可商量的规矩。
八、所以,区别到底是什么
一句话:
通用模型会告诉你"我觉得这儿不对"。
程序会告诉你"我凭抗滑 1.30 判的,原文是这句话,在第 2 章坝体设计"。
前者是意见,后者是证据。
平时聊天,意见就够了。但在评审会上,专家问你"你凭什么说这里不够",你需要的是后者。
这就是我花五年时间,一条一条给它立规矩的原因。
不是为了让它更聪明。
是为了让它在该较真的地方,不许改口。
数据说明:① 埋错对照实验为一次可控实验,同一底层模型、三组问法,文档约数百字、5 处错,用于隔离变量,不构成大样本统计;② 长文档实测为一份 14.2 万字水利工程可行性研究报告,18 章节块、骨架 1,175 字、确定性扫描 9 条、模型发现 274 条去重后 269 条、耗时 44.9 分钟、38.8 万 token;③ 水闸报告与闸类安全评价的强条数据来自域作用域修复前后的对照实测。以上均为过程记录,最终结论仍需人工确认。














































































