让 AI 逻辑可单测:把可测的部分拆出来

人工智能 · 2026-10-07

「AI 没法测」是借口,大部分逻辑可测。本文给出四类可拆分的部分与测法、三个具体做法(注入假客户端/提示词快照/真实输出夹具)、快照测试的注意点与判断标准。


AI 逻辑也可以被单测

"AI 部分没法测" ✗ 是最常见的借口 ✔ —— 其实**大部分逻辑是可测的** ✔,

只是要把"模型调用"从"业务逻辑"里分出来 ✔。

**让 AI 逻辑可单测** ✔,收益很大 ✔:改起来快、回归便宜、bug 定位准 ✔。

一、把可测的部分拆出来(四类)

| 部分 | 可测性 | 怎么测 |

|---|---|---|

| **组装**(模板 + 变量 → 最终提示) | 完全可测 ✔ | 快照测试(snapshot ✔) |

| **解析与校验**(输出 → 结构化对象 ✔) | 完全可测 ✔ | 用构造的输出样本单测 ✔ |

| **路由与降级**(选哪个模型/走哪条路 ✔) | 完全可测 ✔ | 输入条件 → 期望路径 ✔ |

| **模型本身的行为** | 不可单测 ✗ | 用评测集(见评测那几篇 ✔) |

**关键**:**前三类覆盖了大部分 bug** ✗→✔(格式错、解析崩、路由错 ✔),

而且它们**不需要调用模型** ✔(毫秒级跑完 ✔)。

二、具体做法(三个)

1. **注入模型客户端**(依赖注入 ✔)→ 单测里用**假客户端**返回固定输出 ✔;

2. **快照测试提示词** ✔(模板改动会体现为快照差异 ✔,便于 review ✔);

3. **用真实输出做测试夹具** ✔(从线上收集的"疑难输出"存成 fixture ✔ —— 见边界用例库 ✔)。

三、快照测试的两个注意点

  • **快照要能解释** ✗→✔(差异要人看懂:是变量变了还是措辞变了 ✔);
  • **不要盲目更新快照** ✗("一键接受"会让测试失去意义 ✔ —— 每次更新都应说明原因 ✔)。
  • 四、哪些不该单测

  • **模型输出的具体措辞** ✗(会随版本变 ✔ → 应测"是否符合结构/是否含必需字段" ✔);
  • **端到端质量** ✗(那是评测集的活 ✔)。
  • **判断标准** ✔:这个断言**在同一系统版本下是否稳定** ✔?

    稳定 → 单测 ✔;不稳定 → 评测 ✔。

    五、一条判据

    > 修改提示词模板后 ✔,你能否**在不调用模型**的情况下发现"变量漏了/格式错了" ✔?

    > 不能,说明组装与解析还没有单测覆盖 ✗。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →