任务架构

验证本地模型的结构化输出

要求模型返回 JSON 不保证语法、字段、类型或取值都正确。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-03 · Fact IDs: FUNCTION-01, COVE-LIFECYCLE-01, GEMMA-FUNCTION-HOST-VALIDATION-2026-01

直接回答

结构化输出仍然是模型生成的内容;在宿主应用完成解析和校验前都应视为不可信输入。提示词要求 JSON 并不能保证格式正确、字段齐全、类型匹配、值安全或没有额外文本。应使用严格且有界的解码器,按应用自有模式检查结果,再结合当前状态执行领域规则;对未知值提供修改或失败路径,而不是静默转换。不能把任意模型文本直接反序列化到有权限的类,也不能让文本中的函数名直接调用方法。 将语法检查和语义检查分开。合法 JSON 仍可能包含负金额、超出范围的日期、空译文或未知枚举。定义必填与可选字段、长度和列表上限、允许枚举以及缺字段时的处理方式。模式应带版本,便于在提示词或运行时变化后复核已保存输出。如果模型输出是分段流,只有解析器确认最终边界后才能持久化完整对象。 稳健的结果流程包含原始输出暂存、语法解析、模式检查、业务规则验证、必要的用户复核和最终持久化。每一阶段返回有类型的结果,区分未完成、无效、已接受、已修改和已拒绝。若用户需要比较,原始输入与规范化结果可分开,但必须遵守保留策略,且不得把私人内容写进普通日志。验证失败时报告字段和错误类别,不要回显整个敏感响应。 模型可能在结构块前后添加说明、重复键、生成重复对象或使用未预期的数字格式。应明确这些情况是拒绝还是由窄范围规范化规则处理。不要用宽泛正则从任意文本里救回函数调用,也不要隐藏边界错误。如果运行时针对确切制品提供受约束解码,要核对适用范围,并继续验证解析结果;生成约束不能替代应用授权或业务检查。 测试要包括正常与对抗样例:最小合法对象、缺字段、null、标量类型错误、超范围值、未知枚举、额外嵌套字段、超长列表、非法转义、部分流、重复对象以及字符串中的指令文本。还要测试进程重建和已保存结果的模式迁移。验收标准应针对任务属性,不只是“能解析”。译文可以格式正确但漏掉句子;提取字段也可能语法正确却没有原文支持。 如果结构化数据会触发动作,还要增加第二道门:模式合法的参数不代表用户授权。执行处理器前检查当前请求、权限、应用策略、用户确认和幂等性。即便推理完全本地,这个边界仍然重要。 实施顺序:先定义带版本的模式与缺失字段规则;在有界阶段严格解析,拒绝模糊格式;再按来源证据和任务状态验证语义,让不确定或重要字段供用户复核;校验后遵循数据保留策略进行保存;最后用格式错误、对抗、部分流、重复和迁移样例测试。这样是在概率性模型周围建立可靠数据边界,并不意味着模型永远遵循格式。

模型返回一份 JSON 格式的费用草稿

离线助手从用户提供的收据图像提取商家、日期和总额。提示词要求返回 JSON,但系统不能把缺失值或看似合理的猜测静默保存成已核实费用。

决策

解析到窄范围、带版本的模式;逐字段对照可用原文证据;不确定或重要值须由用户确认。

预期结果

应用保存带来源的已校验草稿或清楚拒绝;仅仅语法有效不能绕过复核。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • 版本化模式和字段边界
  • 解析与语义错误分类
  • 来源证据及用户复核记录

任务质量需要有版本记录的语料和验收规则;流畅的单条样例不等于准确度结果。

实施流程

  1. 定义有界数据模式. 列出必填字段、空值规则、枚举、列表限制和字符串最大长度。让模式随任务版本演进,不要把任意字段映射到有特权的对象类型。
  2. 严格解析并分类错误. 拒绝结构错误、部分流、重复或歧义记录、超大负载和不支持的类型。返回错误类别与字段路径,不回显全部私人响应。
  3. 依据证据验证含义. 检查取值范围、日期策略、来源是否存在,以及图像或识别文本是否支持字段。将建议值与已核实值区分,并允许用户修改。
  4. 设置保存和动作门禁. 按数据保留规则,仅保存校验和复核后的结果。若结果能触发工具,还须分别检查授权、权限、确认、请求身份和重复执行。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 每个持久字段均定义类型、范围以及来源或用户复核方式。
  • 格式错误、部分流、多余字段、类型错误和过大结果会被拒绝或按窄范围规则处理。
  • 结构化结果不会仅因成功解析就触发动作或变成可信数据。

决策对照表

维度选择或证据解读方式
提示词要求 JSON生成指令不能保证语法、模式或领域结果正确。
严格解析与模式校验结构验证能检查形状和类型,但不能证明值与原文相符。
语义与用户校验应用验收门保存或动作前检查证据、当前状态与用户复核。

需要避免的失败模式

  • 将可解析等同于可信
  • 用宽松正则抽取模型调用
  • 把未完成流输出持久化

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

模型输出可以解析,就能信任吗?

不能。解析只证明语法,不证明值正确、原文支持、已获授权或适合保存。还需执行模式和领域校验,并为不确定字段保留用户复核。

要从任意前后文本中抽取 JSON 吗?

只有在边界被精确规定且测试覆盖后才考虑。宽泛正则可能选错对象、隐藏截断,或把歧义函数调用变成可执行输入;失败时应拒绝并说明字段路径。

受约束解码能取代应用校验吗?

不能。它只在准确运行时和模型支持时限制生成方式;应用仍须核验语义、权限、用户意图和保存规则,并处理有效结构中的错误值。