跳到主要内容

一次结构化输出失败复盘

· 阅读需 2 分钟
一介布衣
全栈开发者 / 技术写作者

补档说明:本文属于「AI 工程落地周记」系列,计划发布时间为 2025-05-03 11:40。当前先保留为草稿,后续补充真实案例、代码片段和复盘细节后再发布。

这次失败并不复杂,但特别典型。模型表面上已经按 JSON 返回了结果,接口也没有报错,前端甚至还能正常展示。但真正把结果往下游流程里送时,系统才发现有一个关键字段类型不稳定,有时候是字符串,有时候是数组。

这种问题最麻烦的地方就在于,它不像完全报错那样容易被发现,而是会先以“偶发脏数据”的形式悄悄混进链路。

现象

最早暴露问题的,不是模型调用层,而是后面的业务解析层。平时测试样本都过了,线上少量真实请求一进来,就开始出现解析分支越来越多、补丁越来越多的情况。

判断

这次复盘让我更确定一点:结构化输出的问题,很多时候不是“模型会不会返回 JSON”,而是“Schema 是否真的被定义清楚、校验是否真的执行到位”。

如果没有强校验,系统会默认把“差不多对”当成“可以接收”,后面就会越来越难收拾。

处理

这次之后,我会优先做两件事:

  • 模型返回后立刻做严格校验
  • 校验失败就 fallback 或重试,不让脏结果继续往后流

把问题卡在入口处,比在下游到处补救省心得多。

结论

一次结构化输出失败最值钱的教训通常不是“换个模型”,而是提醒我们:只要结果要进入系统流程,就必须把契约和校验当成第一优先级。

  • 读者:关注 AI 应用落地、全栈工程化、工作流自动化和技术内容系统的开发者。
  • 场景:补充 2025 年到 2026 年初这段时间里缺失的技术观察和工程复盘。
  • 目标:不写成新闻转述,而是写成可以复用到项目里的判断框架。