K4.4.4 Task 4.4

Schema 说合法。行项目加起来不等于总计。两个都是事实。

tool_use 保证结构正确性:合法 JSON、必填字段存在、类型正确。它不保证语义正确性。一个通过 schema 验证的提取结果,可以有加不到总计的行项目、不含 @ 的邮箱、或者开始日期在结束日期之后。

差距在哪

在一条流水线中,tool_use 在生成时捕获了 0 个错误(它通过设计就预防了结构问题)。一个单独的语义验证层在 20% 的提取中发现了逻辑错误:

  • 12% 跨字段不一致(加总错误、日期矛盾)
  • 5% 值放错字段(author name 出现在 version 字段)
  • 3% 编造数据

没有语义验证,这 20% 全部未被发现地流入了下游系统。

两层验证

层级捕获什么机制
结构层(tool_use)缺失字段、类型错误、JSON 格式错误生成时的 JSON Schema
语义层(应用代码)加总不匹配、日期顺序、值放错字段生成后的业务逻辑

JSON Schema 表达不了”行项目必须加总等于 total”或”start_date 必须在 end_date 之前”。这些检查需要应用层的验证代码。

虚假的安全感

“schema 通过了,数据就没问题”是错的。通过 schema 的输出在结构上是正确的——在语义上可能完全不通。两层都不可少,它们处理的是根本不同的错误类别。


一句话总结: tool_use 保证的是结构而非含义——加上语义验证(加总检查、日期顺序、跨字段逻辑),因为 20% 通过 schema 验证的提取包含 schema 本身检测不了的逻辑错误。