Schema 可以理解成一份“数据长什么样”的说明书。它不负责具体内容,而是定义结构、字段、类型、层级和约束。只要你希望模型别再自由发挥,而是老老实实按某个格式输出,Schema 基本就会登场。这也是为什么一聊 JSON、结构化输出、函数调用、工具调用,总会顺手带出它。
它到底在约束什么
| 约束项 | Schema 在说明什么 |
|---|---|
| 字段 | 必须有哪些键,名称是什么 |
| 类型 | 是字符串、数字、布尔值、数组还是对象 |
| 层级 | 哪些字段包在一起,谁是谁的子项 |
| 规则 | 哪些必填、哪些可空、哪些只能取特定值 |
为什么它会同时出现在 JSON 和工具调用里
因为这两类场景都不想要“像样就行”,而是想要“程序能直接接”。如果模型输出一段自然语言,人可能看得懂,但程序未必能接住;有了 Schema,模型就不是单纯在写答案,而是在往一个规定好的容器里填值。工具调用尤其依赖这一点,因为参数名、参数类型和必填关系一旦错了,工具就可能直接报错。
它和提示词有什么关系
提示词是在告诉模型“你要做什么”;Schema 更像在告诉模型“你产出的数据必须长成什么样”。两者常常一起用,但作用不同。只靠提示词,模型可能知道要输出联系人信息,却未必稳定地给你 name、phone、email 这些固定键;加上 Schema,输出会更接近程序预期。
常见误解
- 误解一:有了 Schema,结果就一定可靠。其实它更擅长约束格式,不负责保证事实本身正确。
- 误解二:Schema 只属于开发者。实际上,只要你在做固定表格提取、批量分类、自动化工作流,就已经在受它影响。
- 误解三:它只是 JSON 的另一种说法。更准确地说,JSON 是载体,Schema 是规则。
所以,Schema 的真实价值不是让输出“看起来更整齐”,而是让模型结果更容易进入程序、表格和工具链。它解释了一个常见现象:为什么同样是让 AI 提取信息,有人得到的是一段散文,有人得到的是能直接落库的数据。