知行札记
专题AI 模型与系统模型交互、上下文与输出约束

结构化输出与语义校验

分清提示、JSON、schema、约束解码与业务校验的保证范围。

输出要通过哪些层

自由文本请求某种格式,JSON 模式保证某类语法,schema 模式约束允许结构,本地验证确认接收到的数据符合规则,业务校验判断值与事实和权限。每层解决不同缺陷。拒绝、截断、网络错误和不支持 schema 需要独立处理。

构造输出对象含 recordId 和 quantity。它可以是合法 JSON,也符合字符串/整数类型,却使用不存在的身份或负数量。语法与类型通过之后,仍需查对象存在、数量范围、当前用户权限和操作前提。

约束解码怎样限制候选

解码器维护当前解析/文法状态,计算哪些后续 token 能继续形成允许输出,对其余概率置零并重新归一化。JSON Schema 的支持子集可以通过文法、解析器或其他约束实现;上下文无关语言通常不能仅以有限状态机完整表达递归嵌套,具体实现需要检查。

掩码选择合法路径,保证受支持且完整结束的输出符合实现约束。它无法判定资料中的日期真实、计算正确或某个操作被授权。强格式可能改变生成路径,影响任务质量的程度需要按模型和任务测量。

例如字段 decision 只允许 accept、reject 和 unknown。生成器读到该字段时,根据已有字符和 tokenizer 的 token 内容筛选仍可通向这些值的候选;一个 token 可能含多个字符,状态更新需要处理整个 token。允许 unknown 为缺证据提供可表达结果,若 schema 强制二选一,合法输出也可能只是被迫选择。格式设计因此参与任务语义,枚举约束不会自动取得判定依据。

schema 是接口的一部分

供应商、模型、微调版本与本地引擎支持的关键字可能不同。根类型、可选字段、递归、字符串模式、数值范围、属性数量和嵌套深度应核对实际接口。SDK 使用同一种类型库,不能使后端支持全部 JSON Schema。

定义稳定身份、单位、未知值与枚举含义;将原始证据位置放入允许格式。schema 拒绝请求时,不能悄悄删除关键约束再把输出当作原契约。确需降级时,应用在本地恢复相应验证。

例如 amount: 100 缺少单位,可能被不同消费者理解为元或分;null 可以表示未知,也可能表示没有此项,两种意义必须在契约中分清。输出约束的目标是让消费者解释同一数据,字段名、数据类型、单位和来源关系共同决定能否正确使用。

验证与重试的边界

validate-retry 先生成再校验,将具体错误交给模型修复。它可能修正缺字段和类型,却没有必然收敛保证。限定尝试次数、总耗时与费用;每次重试可能得到新的语义错误。事实校验失败应回到证据,格式校验失败才主要调整结构。

先自由求解再结构化会增加调用、延迟和两阶段一致性风险,也可能让格式与任务拆开。允许自由解释字段会增加 token;用户不需要内部推理记录时,可保留简短可检查理由。选择应依据真实缺陷,不能将“约束必伤推理”当作统一定律。

工具参数与最终回答

工具 schema 描述行动请求,最终回答 schema 描述给用户的数据。服务可能对二者有不同兼容与调用选择。收到参数之后先验证,再授权,再执行,再记录效果;schema 内写“只读”或“安全”无法替代实际工具能力限制。

最后更新于

本页目录