K4.1.1 Task 4.1

"保守一点"等于没说——47% 一致率。"缺少样本量"才有意义——94%。

一个文档质量分类器用了这样的 prompt:“只报告高置信度的发现,评分时保守一些。“同一篇论文,跑一次评”高质量”,再跑一次评”低质量”。多次运行的一致率:47%。

换成:“当方法论缺少样本量或对照组时标记。“一致率直接跳到 94%。

同一个模型,同样的 temperature,同样的文档。唯一的变化是标准的具体程度。

模糊词为什么不行

LLM 对主观修饰词没有稳定的内部校准。“高置信度""保守""合适""专业”——这些词在不同上下文里含义不同,模型每次运行都从合理的解读中选一个。

这不是随机性,是歧义。模型在正确地处理一条模糊指令——“保守”有很多种理解方式,模型从中采样。具体标准直接消灭了采样空间:方法论有没有样本量,是或否,没有第三种可能。

数据说话

一个客服团队把模糊标准替换成具体标准,覆盖 500 条已审核的回复:

标准多次运行一致率误报率
”检查回复是否合适”52%38%
“标记:退款超出政策限额,或回复承诺了不可用的功能”91%7%

具体标准让一致率提升了 39 个百分点,误报率降低了 31 个百分点。驱动一致性的是标准,不是模型。

常见模糊词及其替代

模糊具体
”语气要合适""标记讽刺、甩锅措辞或敷衍表达"
"高置信度的发现""当方法论缺少样本量或对照组时标记"
"根据影响评定严重等级""HIGH:生产路径崩溃。MEDIUM:输出错误。LOW:外观问题"
"准确且仔细""日期用 ISO 8601 格式提取,有歧义时返回 null"
"确保专业质量""标记退款金额超过 $500 限额或回复承诺了已下线功能”

规律很明显:用具体的、可验证的条件替换主观形容词。“专业”是观点,“超过 $500 限额”是事实。

这些方法修不了模糊标准

降低 temperature。 temperature 影响的是输出生成时的随机性,不是模型对主观词的理解。“合适”这个词在 temperature 0 和 temperature 1 下都没有一致的含义。

堆更多模糊文字。 “更准确、更仔细一些”增加了零具体性。“再检查一遍你的工作”是鸡汤,不是指令。叠加模糊修饰词制造的是更多层歧义,不是更多层精度。

多跑几次。 用一条模糊标准跑 10 次然后取平均,并不会收敛到一个一致的标准。每次运行独立地解读歧义——对主观解读取平均,得到的是不一致的平均值。

加一轮复审。 如果第一轮用模糊标准产生了误报,第二轮用同样的模糊标准会产生同样的误报。需要改的是标准,不是轮数。

分类别精度

一个包含 5 个审查类别(安全、正确性、性能、风格、文档)的流水线,不需要所有类别的标准都一样细:

  • 安全: 精确触发条件带代码示例——SQL 注入模式、查询构造中未检查的用户输入
  • 正确性: 具体条件——注释中声明的行为与实际代码逻辑矛盾
  • 性能: 可度量阈值——处理 10K+ 元素数组的循环中出现 O(n²)
  • 风格: 命名规范——变量用 camelCase,组件用 PascalCase
  • 文档: 存在性检查——public 函数没有 JSDoc、缺少参数描述

每个类别用匹配其精度需求的标准。安全需要精确触发条件(零误报优先)。风格需要命名约定(轻微不一致可接受)。两者都是具体的——只是粒度不同。

这种组合同时实现了覆盖面(5 个类别)和精度(具体触发条件)。不需要为了减少误报而砍掉类别——具体标准在每个类别内部就能防止误报。

底线

如果标准里包含”合适""专业""保守""高质量""仔细""全面”这类词,又没有用具体条件定义它们的含义,结果就会不一致。把每个主观修饰词替换成可验证的条件。


一句话总结: 把每个”要合适”换成”当 X 与 Y 矛盾时标记”——主观修饰词产出 47% 一致率,具体条件产出 94%。