# Lesson 22.5: 无人评测架构——消灭判断，只留验证

## 本课目标

- 理解"判断→验证"转换的核心原则：AI 每一步都可能幻觉，但验证比判断更抗幻觉
- 掌握 4 种无人评测模式：Claim 查证、对抗式攻击、跨模型分歧、参考语料锚定
- 能够为自己的产品设计一条不依赖人类的自动化评测链路
- 理解幻觉不可消除但可被工程化约束的设计哲学

> **前置知识**：本课建立在 Lesson 22.1（EDD 实战）的基础上。你需要先理解 Model Grader 的三大陷阱（随机性、同质化、虚假收敛），才能理解为什么需要本课的替代方案。

## 核心内容

### 设计哲学：幻觉不可消除，但可以被约束

AI 参与的每一步都可能产生幻觉——提取事实时可能编造、搜索时可能遗漏、比对时可能误判。完全消除幻觉是不可能的。

但 AI 确实具备理解和推理能力。解题思路不是"不用 AI"，而是**重新设计 AI 的角色**：

```
❌ 让 AI 当裁判："这段内容质量如何？打 1-10 分。"
   → 主观判断，幻觉直接变成最终结论

✅ 让 AI 当侦探 / 律师 / 计算器：
   → 侦探：提取事实声明（结构化任务，幻觉可被下游验证）
   → 律师：寻找反例（攻击结果可被查证）
   → 计算器：算 embedding 距离（零幻觉，纯数学）
```

**关键洞察**：不是"AI 能不能犯错"，而是"犯错后能不能被下一步捕获"。评测链路的每一步都假设上一步可能出错，用下一步来兜底。

### 模式 1：Claim 提取 + 事实查证

不让 AI 打分，让它做两件更可靠的事——**提取**和**查证**。

```
原文: "大多数患者通过减少钠摄入和运动，
       就能将血压恢复正常，无需依赖药物。"

Step 1 — Claim Extractor（提取，不判断）
  → "大多数高血压患者无需药物即可恢复正常"
  → "减少钠摄入 + 运动是充分条件"

Step 2 — Fact Verifier（查证，不判断）
  → 搜索 WHO guidelines, PubMed
  → 找到: "lifestyle modification alone is recommended
           only for stage 1 without additional risk factors"

Step 3 — 逻辑比对（确定性）
  → 原文声称范围 ⊃ 证据支持范围
  → verdict: OVERGENERALIZED
```

每一步的幻觉风险：
- Step 1 提取遗漏？→ 多跑几次取并集（pass@k 思路）
- Step 2 搜索不到？→ 标记为 UNVERIFIED 而非 SUPPORTED
- Step 3 比对出错？→ 逻辑比对是最简单的任务，幻觉率最低

### 模式 2：对抗式攻击代替打分

让 AI 打分不可靠，但让 AI **找反例**更可靠——因为攻击成功与否是可验证的。

```
❌ "这段文本质量如何？请打分。"
   → 随机、主观、不可复现

✅ "请找出这段文本中可被反驳的具体陈述，
    并给出反驳来源的 URL。"
   → 找不到反驳 = pass
   → 找到了 = 验证 URL 是否真实存在（确定性检查）
```

为什么攻击比评价更可靠？
- 评价是开放式问题（"好不好？"），答案空间无限大
- 攻击是有约束问题（"找一个反例"），要么找到要么找不到
- 找到的反例可以被独立验证（访问 URL、核对原文），不依赖 AI 的"判断"

### 模式 3：跨模型分歧检测

不追求多个模型达成共识，而是**利用分歧本身**。

```
Claude:  claim X is supported
GPT:     claim X is unsupported
Gemini:  claim X is partially supported

决策规则：
  全部一致 → 自动通过
  存在分歧 → 自动标记为不可信 / 降级处理
```

关键区别：这不是投票（少数服从多数），而是**把分歧当作风险信号**。不同模型有不同的训练数据和偏好，它们的分歧点恰好暴露了不确定区域。

为什么这比同模型多次更好？
- 同模型 × N 次 = 同一个概率分布上的 N 次采样（盲区相同）
- 跨模型 = 不同概率分布的交叉（盲区互补）

### 模式 4：参考语料锚定

预先构建已标注的参考语料库，用数学距离代替打分。

```
已标注语料:
  good_examples/  → 50 篇已确认合格的文本
  bad_examples/   → 50 篇已确认有问题的文本（含问题标签）

评测流程:
  新文本 → embedding
        → 与 good/bad corpus 计算 cosine similarity
        → sim(new, bad_37) > threshold
        → 输出: "与 bad_example_37 相似，
                 已知问题: 夸大非药物治疗效果"
```

零随机性：模型只做 embedding（极稳定），判断逻辑是纯数学。

冷启动问题：需要一次性人工标注参考语料。但标注完成后，评测 loop 中不再需要人——这是"一次性投入，持续自动化"。

### 决策表：选择哪种模式？

| 你要评测的内容 | 推荐模式 | 理由 |
| :--- | :--- | :--- |
| 事实性内容（数据、引用、声明） | 模式 1：Claim 查证 | 可搜索验证 |
| 安全性 / 合规性 | 模式 2：对抗式攻击 | 反例可验证 |
| 风格 / 调性 / 主观质量 | 模式 4：参考语料锚定 | 数学距离，零随机性 |
| 争议性 / 不确定内容 | 模式 3：跨模型分歧 | 利用随机性 |
| 有确定正确答案 | Code Grader（L22.1） | 不需要本课的模式 |

---

## 常见问题

**Q: 模式 1 的 Claim Extractor 本身也可能幻觉（编造不存在的声明），怎么办？**
A: 这是可接受的。如果 Extractor 编造了一个原文中不存在的 claim，Fact Verifier 去查证时会发现它在原文中找不到对应句子——这反而能被后续步骤捕获。链路设计的核心就是"假设每一步都可能出错，用下一步来兜底"。

**Q: 跨模型成本很高，值得吗？**
A: 只对高风险内容使用。先用 Code Grader 过滤掉能确定性检查的部分，剩下的不确定内容再走跨模型分歧检测。大部分内容不需要走到这一步。

**Q: 参考语料的标注不还是需要人吗？**
A: 对，但这是一次性的前置投入，不在运行时 loop 中。区别在于：标注 50 个样本是有限的、可完成的任务；而"每次评测都让人审核"是无限的、不可规模化的。

---

## 下一步

请调用 `AskUserQuestion` 展示以下选项，让学习者点击选择；从每条中提炼 1-5 个词作为 label，其余写入 description，不要要求输入数字：

- 回到 **[Lesson 22.1 EDD 实战](lesson-22.1.md)** 复习 Model Grader 陷阱
- 继续 Lesson 23：自动化工作流——将评测集成进闭环
- 返回主菜单

---
*阶段 4 | Lesson 22.5/26 | 上一课: Lesson 22.4 - TDD Prompt 模板 | 下一课: Lesson 22.6 - AI 编程即训练*
