JSON、Schema 与工具参数
可复习 · 待写自己的解释本章材料
- MDN · Working with JSON
- JSON Schema · Creating your first schema
- JSON Schema · Object
- Pydantic · Models
- Anthropic · Tool use
原提问中的课程截图尚未导入。本页用可核对的文档和独立教学例子解释同一组概念。
重点
- JSON 是表示数据的文本格式。 它不是一段会自己运行的指令。
- Schema 规定数据结构。 字段类型、必填项和允许值都可以作为检查规则。
- 解析、校验和执行是不同步骤。 读得懂数据,不代表字段符合要求,更不代表内容真实或操作已完成。
- 工具调用把请求连接到程序。 模型生成结构化调用;运行环境执行工具,再返回结果。客户端工具由应用执行,服务端工具由服务提供方执行。
Codex 根据本页文档核实并编写,2026-10-30;没有直接发布原回答。
难点
“只输出 JSON”是一条提示,不等于已经做了校验。 Structured Outputs 是按规定结构生成数据的能力;支持的规则、严格模式和失败处理取决于所用服务。不要把“结构合规”理解成“事实正确”。
Pydantic 是 Python 的数据建模与校验工具,可以检查类型和约束;默认情况下某些类型可以转换,严格配置则更少接受隐式转换。它不会替你证明项目真的存在。
parser 把文本解析成程序中的数据;repair 尝试修复格式;retry 重新尝试。修复之后仍需检查字段和业务含义,不能靠补上一个逗号就确认信息正确。
动手看
下面是虚构的学习项目记录,不会创建真实项目:
{
"name": "学习笔记",
"year": 2026,
"published": false,
"tags": ["AI", "复习"]
}
花括号表示对象,方括号表示数组;name 是字段名,"学习笔记" 是字符串,2026 是数字,false 是布尔值。JSON 的字段名和字符串使用双引号,最后一个字段后面不加逗号。null 表示空值。
假设这里只接收两个必填字段:
{
"type": "object",
"properties": {
"name": { "type": "string" },
"year": { "type": "integer" }
},
"required": ["name", "year"],
"additionalProperties": false
}
这份规则不接受额外字段;上面含 published 和 tags 的记录需要先调整,或修改规则。只写 properties 不会自动把字段变成必填项。
容易混淆的几个概念
| 概念 | 回答的问题 |
|---|---|
| JSON | 数据用什么格式表达? |
| Schema / JSON Schema | 结构必须满足哪些规则? |
| API | 程序通过哪个约定的接口交互? |
| Tool Calling | 模型请求调用什么工具、传哪些参数? |
| Pydantic | Python 程序如何按模型定义检查数据? |
| Structured Outputs | 如何约束生成结果的结构? |
数据写好了,不等于操作完成了。 继续看 Week 1 · Agent 与 Tool Calling,把这套术语放回完整执行流程。
来源
- 原问题来自 ChatGPT「AI知识问答」(2026-10-29 归档,第 1 条消息);ChatGPT 当时的回答在「原始对话」标签,未经核校。
- 解释、例子、流程和测验由 Codex 根据本页材料编写;文档链接于 2026-10-30 核对。教学记录为虚构数据。