结论先行:Structured Outputs 解决的是“模型是否按约定形状交付”,不是“内容是否真实”。可靠抽取需要三层校验:Schema 合法、业务口径一致、证据能够支持字段。任何一层失败都不能静默流入最终结论。
最小 Schema
一个可比较的财报事实对象至少包含 metric、value、unit、periodStart、periodEnd、fiscalLabel、sourceUrl、page、evidence 和 missingReason。数值与单位必须拆开,报告期与发布日期必须拆开,来源 URL 与支持字段的原文也必须拆开。
{
"metric": "revenue",
"value": 1250.4,
"unit": "USD million",
"periodEnd": "2026-06-30",
"sourceUrl": "https://example.com/filing",
"page": 8,
"evidence": "Revenue for the quarter was ...",
"missingReason": null
}
金融案例:三份公告统一口径
公司公告可能分别使用千、百万或十亿,季度标题也可能按自然年或财年表达。模型把三份公告转成相同 Schema 后,程序先检查类型和必填字段,再把单位归一,最后验证期间长度与原文。只有通过三层检查的数据才进入比较表。
如果原文只披露百分比而没有绝对值,value 应为 null,并在 missingReason 说明“来源只披露增速”。不要让模型反推一个没有证据的数值。
Lab:建立抽取管线
- 选择三份不同格式的公司公告,先手工定义 8 至 12 个字段
- 为每个字段写类型、是否必填、允许枚举和 null 语义
- 让模型按 Schema 抽取,并保存原始响应
- 运行 Schema 校验,再人工抽查所有重要数字的期间、单位和证据
- 汇总结构失败、口径失败和事实失败,分别计算通过率
常见失败与排查
- 把所有数字写成字符串:下游无法安全计算,应拆数值与显示文本
- 用空字符串表示所有异常:缺失、拒答、解析失败需要不同状态
- Schema 过度嵌套:先保证最小可用字段,再为明确需求扩展
- 只保存最终 JSON:调试时需要原始响应、模型版本和校验错误
本课成果物
保存 Schema、三份原始响应、校验结果和最终统一表。要求 Schema 通过率 100%,重要字段证据覆盖率 100%;事实准确率单独记录,不用结构通过率冒充。
资料来源
本课实践工作台
为三期收入和利润数据设计可验证 Schema,并显式表达期间、单位、来源、缺失和修订状态。
ResearchCo 任务书与冻结财务数据
财报事实 Schema 与统一结果
自动保存到当前浏览器;建议在完成后导出到自己的研究目录。
草稿仅保存在当前浏览器,不会上传。
查看合格示例
合格示例:2025 Q4 收入同时保存原始值与修订状态,期间结束日和发布日期分开。
查看失败示例
失败示例:数值写成‘约 1.2B’,没有单位字段、期间和可定位证据。
实践通过条件:验收清单全部完成,并且本课小测最好成绩达到 4/5。当前最好成绩 尚未作答。
本课检查点
允许重试并保存最好成绩。达到 4/5 且 Lab 自查完成后,实践状态才会通过;它不会替你自动完成阅读。