只要下游要解析模型输出,就应该用结构化输出,而不是靠正则从自然语言里抠字段。

一、把 schema 写窄:字段越少越稳。先从必需的 3 到 5 个字段开始,稳定后再扩展。每个字段给类型、枚举值和缺失时的行为。

二、枚举优于自由文本:把“优先级”限制为 high、medium、low 三个值,比让模型写“比较紧急,建议尽快处理”好处理得多。

三、让“不知道”成为合法值:允许字段返回 null 并说明原因,能显著减少编造。模型在无法确定时被迫填空,就是幻觉的主要来源之一。

四、校验层要真校验:拿到 JSON 后用 schema 校验器跑一遍,失败就重试一次或降级到人工。不要假设“模型说它是 JSON 就一定是合法 JSON”。

五、日志留原文:保存原始输出,方便复盘为什么校验失败——很多格式问题其实是提示词里的字段说明有歧义。

常见坑是把 schema 写得过深(三层嵌套加联合类型),模型容易在深层结构上出错。能拍平成两层,就别做三层。