Output Parser:告别正则,强制要求 LLM 输出规范的 JSON 测试用例 引子:一个让人抓狂的下午上周三下午三点,我盯着屏幕上那条日志已经整整二十分钟:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 47 column 12第47列,一个不该出现的单引号。我在正则表达式里又加了一条规则——这已经是第14条正则了。过去三个月,我维护的那个“AI 自动生成测试用例”的管道,JSON 解析失败率一直在 8% 到 12% 之间波动。每次以为修好了,第二天日志里又冒出一批奇怪的格式:有时是大模型在 JSON 外面包了一段解释文字,有时是数组里混进了undefined,有时干脆就是一串 Markdown 表格。“让 LLM 输出 JSON”——听起来很简单,实际上是个坑。模型厂商在发布会上信誓旦旦地说“原生支持 JSON 模式”,框架文档里写着“一行代码搞定结构化输出”。但真到了生产环境,测试用例这种嵌套深、字段多、还带枚举和约束的复杂 JSON 结构,指望大模型一次生成、永远规范,纯属天方夜谭。直到我开始认真研究Output Parser 架构,才发现这个问题的解法远不止“多写几条正则”。从 LangChain 的解析器链,到 OpenAI 的约束解码,再到 llama.cpp 的语法生成——整个生态在过去半年里围绕着“强制结构化输出”这件事,悄然完成了一次技术跃迁。这篇文章,我将以“生成规范 JSON 测试用例”