约定结构化输出格式
Structured Output Templates
明确输出字段、允许的状态,以及缺少信息时如何表示。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
迁移检查结果要交给程序读取。教学证据为:行数旧表100、新表100;校验和尚未取得。程序必须区分已通过、失败与证据不足,而不是从一段“看起来没问题”的报告推断可以继续。
具体做法
定义合法JSON字段与类型:status及checks数组,单项含name、observed、expected、result。规定PASS/FAIL/UNKNOWN枚举、缺值用null,必需检查不得省略。聚合规则为任一FAIL则FAIL,否则任一UNKNOWN则UNKNOWN,全部PASS才PASS。提供合法实例,生成后另做解析、模式及聚合一致性校验。
反例
评估这次迁移:旧表和新表都有100行,校验和未知。给一个清晰、结构化、可以自动使用的报告。
改进写法
评估相同迁移,只输出JSON。必需检查为row_count与checksum;字段采用status和checks[{name,observed,expected,result}],缺值null。结果只允许PASS/FAIL/UNKNOWN:任一失败总FAIL,无失败但缺证据总UNKNOWN。不能因行数相同就将未知校验和判通过。
为什么这样改
明确模板解决输出组织问题,枚举与缺值规则解决消费者解释问题。聚合契约避免总状态与单项冲突,也使未取得的证据保持可见。
如何验证
教学合法输出:
{"status":"UNKNOWN","checks":[{"name":"row_count","observed":100,"expected":100,"result":"PASS"},{"name":"checksum","observed":null,"expected":"match","result":"UNKNOWN"}]}
检查可解析、两项齐全及总状态UNKNOWN;将行数改成99后总状态应为FAIL,即使校验和仍未知。
适用边界
提示约定不保证模型遵守,也不保证字段真实。机器消费前必须验证实际字节;模式只能检查形状,聚合还需逻辑校验,迁移安全也需实际数据证据。