Appearance
模型输出的约束与验证
第一部 · 模型能力与边界 · 第3章
撰写日期:2026-08-31
结论
Prompt 可以提高模型做对的概率,但不能承担“绝不能出错”的承诺。凡是涉及结构、权限、身份、数字或外部副作用的输出,都需要模型之外的验证。
模型负责理解和生成候选,确定性机制负责决定候选能不能出门。
1. 先按错误后果分级
| 错误类型 | 例子 | 处理 |
|---|---|---|
| 可见、可纠正 | 文案风格不合适 | 允许生成,给编辑入口 |
| 隐蔽但可恢复 | 摘要漏掉一项 | 引用原文、抽样复核 |
| 会污染下游 | 把负面评价识别成投票 | 枚举、置信度、人工确认 |
| 有外部副作用 | 发消息、写文件、删除资源 | 权限门禁、预览、显式确认 |
验证强度应由错误后果决定,而不是由模型看起来多聪明决定。
2. 结构化输出只是第一道门
JSON Schema、固定字段和枚举值能减少解析错误,但不能证明语义正确。一个结果至少需要经过三类检查:
- 形状检查:字段、类型、枚举和长度符合契约;
- 语义检查:作者不能被推送给自己,负面表达不能被当作偏好;
- 权限检查:请求者和目标资源是否允许执行这项动作。
“Prompt 里写了绝不”属于软约束;真正的红线必须在代码或平台权限中再次判断。
3. 给不确定性一个合法出口
强迫模型每次都给答案,会把不确定性伪装成确定。更可靠的契约允许:
- 空数组:没有够格的候选就不输出;
unknown:材料不足,不能判断;- 低置信度转人工:不自动进入下游;
- 引用缺失报错:不能用合理默认值伪装采集失败;
- 生成失败留队:不静默降级成次品。
4. 用代表性样本做回归
验证 Prompt 或模型时,保留一组真实成功、失败和边界样本。模型、提示或数据源变化后重跑同一组样本,观察:
- 是否漏掉应该命中的内容;
- 是否新增不该命中的内容;
- 失败是否显式暴露;
- 人工修正成本是否下降。
没有固定样本的“感觉更好了”,无法成为长期产品判断。