JSON Schema 结构化输出

描述 JSON 结构的声明式标准语言。本教程手写其最小子集(`type` / `required` / `properties`)作为校验器:声明是对象就检查「是不是对象 → 必填字段齐不齐 → 逐个属性递归」,错误以路径化的字符串数组返回。工具参数的 `input_schema` 也用同样的声明。

它是什么

JSON Schema 是描述 JSON 结构的声明式标准语言:用 type / properties / required / items 等关键字声明「形状」,任何语言都能拿同一份 schema 做校验。第 05 章手写它的最小子集(type / required / properties)作为校验器,刻意不支持 minLengthpatternenum 等进阶关键字——够把模型输出挡成「可信数据」,又不至于把一章写成 JSON Schema 教程。

递归下降校验

声明是对象就检查「是不是对象 → 必填字段齐不齐 → 逐个属性递归」;声明是基本类型就查 typeof;错误以路径化的字符串数组返回(如 needsTool: missing required field),方便上层展示与重试时精确定位。最大的坑是 JS 的 typeof null === 'object'typeof [] === 'object'——校验对象时必须显式排除,否则 JSON.parse('null') 也能过校验。

为什么用它而不是发明新格式

它是工具参数(input_schema)、各家结构化输出 API、OpenAI / Anthropic 工具声明的共同语言(function-calling 词条、第 06 章)——学一次到处用。需要更强校验(枚举、正则、自定义逻辑)时再引入 zod 等库不迟。

相关词条

出现在这些章节