跳转到内容

要模型输出 JSON,为什么还会失败?结构化输出能保证什么?

提示词要求 JSON,只是要求模型按格式写。JSON 模式通常解决语法合法;Schema 模式进一步限制字段、类型和枚举。它们都不能保证内容是真的,例如合法的 order_id 仍可能是模型编的。

支持约束解码的实现会限制生成时可选的 Token,使输出符合指定语法或 Schema。可用的 Schema 子集、模型和模式都有支持范围,不能默认所有接口都一样。

否是否是否是模型返回内容完整且可解析?检查截断、拒答、超时符合 Schema?有限修正或返回错误业务事实与权限成立?查真实数据或拒绝执行交给业务处理

允许“不知道”,才能少编字段

Section titled “允许“不知道”,才能少编字段”

从邮件提取订单号时,字段设计应允许“未找到”,或返回明确的缺失状态。强制所有字段非空,却不给模型足够信息,会逼它填一个看起来合理的值。

字段名写清单位,枚举写清含义。收货地址、金额等重要内容还要与原文或业务系统核对。工具调用参数也经过同样检查,不能因为 Schema 通过就直接写数据库。

流式 JSON 到一半,能先执行了吗?

Section titled “流式 JSON 到一半,能先执行了吗?”

不应把半段参数当成最终调用。先按协议组装完整内容,确认结束状态,再解析和校验。文本流的一次 chunk 不一定对应一个完整字段。

解析失败,就把原文丢回模型重试吗?

Section titled “解析失败,就把原文丢回模型重试吗?”

先看是否达到输出上限、模型拒答或连接中断。确实是可修复的格式问题,再给精确错误并限制次数;持续失败就返回明确状态。无界重试只会增加开销,不能证明结果正确。

资料

核对于 2026-10-13。百炼 JSON 与 JSON Schema 模式、阿里 DashInfer Guided Decoding。字段缺失与业务校验为工程示例。