改十遍提示词,不如看一眼停止原因!模型吐坏 JSON 别急着改提示词!三类真凶曝光,多数人第一步就做错
Dev.to 作者拆解模型偶尔返回非法 JSON 的三种成因:截断、夹带废话、结构漂移,并指出先看原始输出和停止原因再动提示词。
大白话用大模型做结构化输出的人常遇到 json.loads() 报错,看着都像「模型抽风」,其实原因完全不同。文章说分三种:一是输出被 max_tokens 截断,字符串没闭合;二是模型在 JSON 外面包了代码块或「这是 JSON:」之类的话;三是 JSON 本身合法但字段形状不对,比如枚举值超范围、缺 key。作者建议先记录原始返回和停止原因,再决定是提高 token 上限、提取最外层大括号,还是上带类型的校验。
对你意味着只要你在用大模型抽数据、做表单、接工作流,这坑早晚踩到;先分类再修,比反复改提示词省事得多。
原文:LLM Returns Invalid JSON Once in a While: Structured Outputs vs Validate-and-Retry
打开巨象雷达,看今天全部 AI 动态