news 2026/9/29 20:12:56

用 LLM 当评审员:四条纪律,和一次「它把不存在的证据编得很专业」的事故

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 LLM 当评审员:四条纪律,和一次「它把不存在的证据编得很专业」的事故

流水线里有一类活,确定性代码判不了:这段讲解讲得对不对、这个说法有没有依据、这份内容是不是偷偷降低了难度。

于是很自然想到让另一个模型来判。这一步是整条流水线里最诱人的——便宜、能规模化、还能给出看起来很专业的分数。

它也是最容易自欺的一步。我们做过一版,然后推倒重写。下面是重写时定下的纪律。

一、旧版错在哪

第一版给的是「七个要素里满足了六到七个」这种聚合分,判据写在提示词的散文里。两个问题:

聚合分掩盖缺口。七分之六看着不错,但缺的是「没有出处」还是「没有反例」,接下来要做的事完全不同:前者补一句引用,后者整段重写。一个总分把这两种情况压成了同一个数字。

它只覆盖了「齐不齐」。要素写满不等于讲对了,更不等于认知强度够。齐全是最容易达标也最没有信息量的那一维。

所以重写的第一件事不是换模型,是把散文标准拆成逐条可判的表。

二、四条纪律

1)判产物,不判声称

只看内容本身有没有。生成器在别的地方说自己做了,不作数。

这条听起来是废话,实际上最常被破坏。生成流程往往会自己输出一段「我已经检查过出处」,评审看到这句话就倾向于给过——它判的是那句自我保证,不是那份产物。

这条写死在评审的提示词里,并且有测试钉着,不是写在文档里靠人记得。

2)每条独立算,看逐条通过率,不看总分

每一条判据独立给零或一,报告刻意不输出聚合分。

不输出是关键。只要那个数存在,人就会去看它、拿它跟上周比、把它当 KPI。而它恰恰是最没有行动价值的那个数。

3)条件不满足就跳过,不进分母

有些判据只在特定条件下适用。条件不满足时算失败,会污染通过率——你会看到一个持续偏低的数字,然后花时间去查一个不存在的问题。

4)评审漏答一条,算失败,不是跳过

这条最反直觉。评审没给某一条判断,看起来像是它出了故障,应该跳过。

但实际情况通常相反:它漏答,往往正是因为产物里没有那部分内容。它找不到可判的东西,于是就不说了。按跳过处理,等于系统性地把真实缺口从统计里抹掉。

不过要区分两种「没答」:

情况处置为什么
评审答了,但少答某一条算失败,进分母少答往往正因为产物里没有那部分内容
评审整份没回(网络中断、输出截断、不是合法格式)排除,不进分母,单独报数基础设施故障不是关于内容的证据

把这两种混在一起,你的通过率会随着网络状况波动。

三、最贵的那个教训:证据不给到,它会编

评审只看得到你交给它的东西。判据要判的东西,证据必须一并交过去——否则它不会说「我不知道」,它会编一个听起来合理的理由。

具体事故是这样的。有一条判据写成「有可信来源,并且正文与来源一致」。实现的时候,我们只把来源的标注字符串交了过去,没有交来源的原文。

评审于是断言:出处标注的是某本教材某一页,但那一页的内容并不是这个主题。

这句话看起来非常专业——具体、可核对、像是真的发现了问题。

它是编的。评审手里从来没有那一页。

而这条假理由混在一堆真实的失败里(「无出处」「缺版本名」都是真的),如果不是有人去核对,它会被当成真问题去修。

修法是把这条判据拆成两条:

  • 出处标注得具体到可以复核—— 这个信息产物里就有,无条件判。
  • 正文与来源一致—— 只在真的取到了来源原文的时候才计分,取不到就跳过。

一句话:没有证据就不判,不猜。

这个教训的适用面远超评审这一件事。任何时候你让模型做判断,都要问一句:

做这个判断所需的证据,是不是真的在它手里?

不在的话,你拿到的不是判断,是一段合理的编造——而且它比明显的错误更难发现,因为它读起来完全正确。

四、能机检的,不给模型判

有几条判据是纯形式的:要素够不够实、有没有外泄内部术语、有没有出现生成器的自白。这些用确定性代码判——又准又免费,而且不受模型自评偏宽的影响。

它们不进评审的提示词。同一条判据上,机检结果优先。

这是一条通用的省钱原则,也是一条准确性原则:先用确定性手段判掉能判的,剩下判不了的才交给模型。反过来做——把所有判据一股脑丢给模型,让它连「有没有这个字段」都判一遍——既贵,又不如代码准。

五、还有两条工程上的规矩

空跑的占位判定一律判失败,不判通过。验管线时不真调模型,用占位结果跑一遍。这时候如果占位是「通过」,管线坏了你也看不出来,还会以为内容已经合格。判失败,坏了立刻显形。

跨类别比较必须分层取样。默认取最近的若干条,而同一批生成的内容挤在一起,类别分布是偏的。拿它比较不同类别,会读出根本不存在的差异。

小结

用 AI 检查 AI 不是不能做,是不能随便做。把它做成可用的检查,需要的不是更强的模型,是四条纪律和一条底线:

判产物不判声称;逐条独立不看总分;条件不满足跳过;漏答算失败。底线是——证据不交到它手里,就不要让它判那一条。


本文首发于「我会了 AI 导师」实践笔记:https://yyzzll.cc/notes/judge-the-artifact-not-the-claim

同系列还有《一步错,后面全废》《别让模型自报状态》等六篇 → https://yyzzll.cc/notes

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 20:11:34

init preallocate_vmalloc_pages

preallocate_vmalloc_pages 是 x86-64 内核在启动阶段用于预分配 vmalloc 区域页表页的初始化函数,位于 arch/x86/mm/init_64.c。它的核心目的是避免运行时昂贵的页表同步操作。核心问题:为什么需要预分配?在 x86-64 上,vmalloc 区…

作者头像 李华
网站建设 2026/9/29 20:11:07

独家实操|腾讯云助手实现测试资源生命周期治理(一)

独家实操|腾讯云助手实现测试资源生命周期治理(一):资源登记体系与到期自动回收脚本系列导航: 第一篇(本篇):被遗忘的测试资源、资源登记与到期标记体系、自动回收脚本实现第二篇&am…

作者头像 李华
网站建设 2026/9/29 20:09:00

Java大模型MCP服务端开发:数据库查询与数据分析(附源码)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 20:08:46

OpenClaw框架核心技术解析:从Skill到MCP的TaoToken配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华