生产级 Agent 排雷实战
李号双
eBay 资深架构师
782 人已学习
新⼈⾸单¥59
生产级 Agent 排雷实战
15
15
1.0x
00:00/00:00
登录|注册

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

你好,我是李号双,这一节课我们聊聊解析 Agent 输出可能会遇到的坑。
先给你看个下游系统解析 Agent 输出的常见写法,估计很多人第一轮都是这么写的:
import json
def handle_agent_response(response_str: str):
data = json.loads(response_str)
order_status = data["order_status"]
tracking_id = data["tracking_id"]
downstream_system.update(status=order_status, tracking=tracking_id)
跑起来没问题,但随着调用量上来,你会发现下游系统偶尔会抛异常,或者数据悄悄写错了。你翻看日志,通常会看到下面三种情况:
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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部