CONTRACT FAILURE
合法 JSON,不等于合法业务对象。
你负责 LLM 抽取接口与订单工作流之间的边界。
抽取结果可以正常 parse,但空 items 数组违反下游业务不变量;三次盲目重试只增加延迟,没有让 Consumer 更安全。
目标
设计一个能在输出进入下游之前拒绝结构错误与语义错误的 Contract。
风险
弱 Contract 会把概率性输出转化成确定性的生产事故。
模型返回了看起来完全合法的 JSON,生产仍然失败——因为语法从来都不是完整 Contract。
你负责 LLM 抽取接口与订单工作流之间的边界。
抽取结果可以正常 parse,但空 items 数组违反下游业务不变量;三次盲目重试只增加延迟,没有让 Consumer 更安全。
设计一个能在输出进入下游之前拒绝结构错误与语义错误的 Contract。
弱 Contract 会把概率性输出转化成确定性的生产事故。
可靠的 Structured Output 需要同时约束 Shape、Semantic、Repair 和 Partial State,而不是只在 Prompt 里要求“输出 JSON”。
JSON Schema 无法表达全部业务不变量。
重试需要证据和停止条件。
Partial Output 必须有 Consumer 语义。
MENTAL MODEL
能够 Parse 只证明语法成立,不证明业务语义成立。
可靠 Structured Output 需要显式 Schema、领域语义验证、有界 Repair,以及清晰的 Streaming Partial-State 规则。模型负责提出数据,应用负责拥有 Contract。
LEARNING CONTEXT
能够 Parse 只证明语法成立,不证明业务语义成立。
本次练习的 CONCEPT
建议补充前置
进入这起事故前,没有必须完成的已发布前置内容。
迁移这个模型
下游新增一个必填业务不变量时,如何升级 Contract 而不让旧 Consumer 静默失效?