144、结构化输出:JSON Mode、Function Calling、Grammars 三种方案对比

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。

优点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值