练习 02:JSON Schema 信息抽取
目标:理解“请输出 JSON”和“结构化输出契约”的区别。
任务
从合同或通知文本中抽取字段:
- 文档编号。
- 甲方。
- 乙方。
- 付款期限。
- 金额。
- 生效日期。
- 缺失字段。
输入样例
合同编号:A-2026-01。甲方为星河科技有限公司,乙方为云川数据服务中心。
乙方应在每月 5 日前提交发票,甲方在收到合法有效发票后 15 个工作日内付款。
本合同自 2026 年 7 月 1 日起生效。
输出 schema 草案
{
"type": "object",
"additionalProperties": false,
"required": ["document_id", "party_a", "party_b", "payment_deadline", "amount", "effective_date", "missing_fields"],
"properties": {
"document_id": {"type": ["string", "null"]},
"party_a": {"type": ["string", "null"]},
"party_b": {"type": ["string", "null"]},
"payment_deadline": {"type": ["string", "null"]},
"amount": {"type": ["string", "null"]},
"effective_date": {"type": ["string", "null"]},
"missing_fields": {
"type": "array",
"items": {"type": "string"}
}
}
}
Prompt 要求
请只基于输入文本抽取字段。
原文没有的信息填 null,并把字段名加入 missing_fields。
不要解释,不要添加 schema 之外的字段。
测试点
- 金额缺失时是否填 null。
- 日期是否按原文抽取。
- 付款期限是否完整。
- 是否新增 schema 外字段。
- JSON 是否可解析。
复盘
如果失败,先判断该改哪里:
- 字段语义不清:改 schema 字段名或说明。
- 输出格式错误:加强结构化输出或解析校验。
- 抽错信息:补充 prompt 中的抽取规则。
- 缺失不处理:明确 null 和 missing_fields。