让模型输出 JSON 做结构化抽取,解析失败率一直很高。主要错误:多了 markdown 代码块、结尾多逗号、字段名大小写不一致。

三处改动:

  1. 用原生结构化输出

支持 json_schema 或者 response_format 的上游,直接用,别靠提示词约束。这是最有效的一步。

  1. 提示词里给完整示例

不是描述字段,是给一个完整的 JSON 样例。模型照抄样例格式的准确率远高于理解描述。

  1. 解析端加容错

先剥 markdown 代码块,再尝试修复尾部逗号,最后兜底用 json5 解析。三层都失败才报错,报错时把原始输出存下来。

第 1 条是关键,但很多国内中转站不支持结构化输出,只能靠 2 和 3。选上游的时候把这条列进评估项。

另外:字段别太多。超过 15 个字段,模型漏字段的概率明显上升,拆成多次调用更好。

主楼