)
如果你的生产代码里还躺着一个叫try_parse_llm_response的函数,里面写着re.search(r'\{.*?\}', response, re.DOTALL)——你不是一个人,但你也还活在2023年。2026年的LLM生态早已迭代了三代,本文将带你彻底掌握结构化输出的核心技法。一、问题:JSON输出不稳,到底有多严重?1.1 一个真实的灾难现场假设你在做一个自动化测试数据生成平台。用户提交需求:“请生成50条电商订单测试数据,包含用户名、商品列表、金额、下单时间”。你写好Prompt发给LLM,模型返回:好的,这是您需要的测试数据: ```json [ { "user": "张三", "items": ["手机壳", "数据线"], "amount": "89.9", "order_time": "2026-05-22 14:30:00" }, ... ]一切看起来没问题,直到你的下游解析器崩溃了。原因无外乎以下任意一种:amount字段有时是字符串"89.9"有时是数字89.9,类型漂移导致Pydantic校验失败;模型在JSON前后加了“好的,这是您需要的测试数据:”这样的废话;嵌套字段