校验(Validation) 结构化输出

别名: 校验层 · 校验器

「提取成功 ≠ 形状符合契约」:把「形状对不对」的检查写进代码,而不是赌模型自觉。校验层是「永远不信任 LLM 输出」这条原则的具体落点,与提取、兜底共同构成结构化输出流水线的三个工位。

它是什么

校验(Validation)层的职责是「把『形状对不对』的检查写进代码,而不是赌模型自觉」:提取成功只证明「这是一段合法 JSON」,不代表「它是我们想要的形状」——模型完全可能给你漏了必填字段的对象、或类型错误的字段。校验层是「永远不信任 LLM 输出」这条原则的具体落点,与提取、兜底共同构成结构化输出流水线的三个工位。

校验什么

类型(string / number / boolean / object / array)、必填字段、嵌套结构——用 JSON Schema(json-schema)最小子集递归实现(第 05 章validateAgainstSchema)。错误以路径化字符串数组返回,方便展示与重试时定位。JSON.parse 能产出 nullnull 能通过 typeof 检查——校验器第一件事就是处理 null 与数组。

为什么不能省

JSON.parse{"action":"x"}{"needsTool":"是"} 一声不吭,你的程序直到 data.needsTool === true 判断落空才察觉。模型是概率系统,输出不可信是常态;复杂场景可引入 zod 等库——但先手写掌握校验语义(required 缺失报什么错、null 怎么处理、错误路径长什么样),尤其当模型输出是唯一输入时,连「报错信息会不会泄露提示词」都要自己把关。

相关词条

出现在这些章节