04|格式幻觉:为什么JSON 完美合规却还能毒杀下游?
李号双

你好,我是李号双,这一节课我们聊聊解析 Agent 输出可能会遇到的坑。
先给你看个下游系统解析 Agent 输出的常见写法,估计很多人第一轮都是这么写的:
跑起来没问题,但随着调用量上来,你会发现下游系统偶尔会抛异常,或者数据悄悄写错了。你翻看日志,通常会看到下面三种情况:

JSON 语法错误。
模型确实调了 query_order 工具,工具也返回了正确的数据库记录。但模型在把这些记录总结成 JSON 时,忘了闭合括号,直接抛 JSONDecodeError。
字段名错误。
有时返回 {"status": "shipped"},有时返回 {"order_status": "已发货", "tracking": null}—— 字段名不一样,解析代码直接抛出 KeyError(或者拿到一堆 None),下游系统以为物流单号丢了,触发跨系统告警。
语义层失效。
要求返回 int 类型的 tracking_id,它给你字符串 "TN123";要求枚举值 ["shipped", "pending"],它给你 "in_transit"。JSON 合法,但语义错了,下游直接把错误数据写入数据库。
绝大多数人理解的结构化输出是:加个开关,加行 Prompt,就以为万事大吉。要弄清问题出在哪,得先搞清楚市面上约束模型输出的三档机制,防线到底建在哪。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《生产级 Agent 排雷实战》,新⼈⾸单¥59
《生产级 Agent 排雷实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论