
144、结构化输出:JSON Mode、Function Calling、Grammars 三种方案对比从一次凌晨三点的事故说起凌晨三点,生产告警炸了。用户上传的简历解析结果里,大模型返回的JSON字段skills变成了"Python, Java, Go"——一个字符串,而不是我们约定的数组。下游的数据库插入直接报错,整条简历入库链路瘫痪了半小时。排查后发现,问题出在Prompt里。我写了“请以JSON格式返回”,但模型偶尔会调皮,把数组写成逗号分隔的字符串。更离谱的是,有一次它返回了{"skills": null},理由是“用户没有填写技能,所以返回null”。我们明明在Prompt里写了“如果为空,返回空数组[]”。这就是结构化输出的核心痛点:你永远无法100%信任大模型会遵守格式约定。哪怕你写了“必须返回合法JSON”,模型也可能在极端情况下给你一个带注释的JSON(没错,JSON标准不支持注释,但模型会写)。JSON Mode:最轻量,但最不靠谱JSON Mode是OpenAI最早提供的结构化方案。你只需要在API调用时设置response_format={"type": "json_object"},模型就会尽力输出JSON。优点