别再“求”AI 守格式了 📅 2026/7/8 2:18:51 《AI 知识卡片》第 06 期 · 做 Agent怎么拿到稳定可靠的格式输出你可能遇到过提示词里写了“只返回 JSON别加多余的话”它偏偏回一句“好的这是结果xxx”。做 Agent 时这尤其要命——Agent 一环扣一环前一步吐了脏数据后面整条链路都可能崩。所以大模型输出的格式必须稳。为什么“求”不管用你在系统提示词里写的格式要求本质是软约束它“倾向于”照做但不保证。对要用程序处理的 Agent 来说“大部分时候对”就是“不可靠”——你没法赌什么时候会翻车。改变一下思路不是把话说得更完美而是**从机制上让它只能输出对的格式并且假设它总会漏层层设防。**下面这些手段由简单到进阶。第一层先把简单的做到位提示词说清楚 给例子。给例子比空口要求有效得多。但它是软约束能把成功率从 70% 提到 95%到不了 100%——是地基不是保险。比如只返回 JSON格式如下不要解释 {name: string, age: number}Temperature参数调 0。结构化任务不需要创意随机性越低格式越稳、越可复现。第二层上“机制级”的硬保证用结构化输出 / 函数调用。这是关键升级。主流大模型 API 都支持结构化输出你给一份JSON Schema字段、类型、必填项模型被从机制上限制只能吐出符合它的结果OpenAI 的response_format等。原理不是“求模型配合”而是在生成时只允许它挑符合格式的内容从源头堵死“加句废话”。在 Agent 里这通常以函数调用Function Calling的形式出现——你定义好工具的参数结构模型产出的调用参数天然就是受约束的 JSON。重试机制。拿到就校验错了让它自己改再硬也要校验Pydantic、zod 这类。不合法就把错误反馈回去、让它先自愈比如上次输出不符合格式错误校验报错 请严格按 schema 重新输出。一两次通常就修对了。但重试必须设上限比如最多 2 次——Agent 最忌“死循环”一直重试既烧钱又拖垮服务。能做到这几步绝大多数场景已经很稳了。但真正上生产、跑大量请求时还得再兜两层底。第三层错了也不能失控1降级兜底绝不把脏数据传给下游。重试到上限仍失败不能直接崩、也不能把脏数据往下游塞要有预案退回用正则做一次宽松解析能捞多少捞多少用一个安全的默认值顶上或者明确报错、转人工2建立监控别凭感觉靠数据。线上跑起来后格式可靠性得能被“看见”盯几个关键指标格式合法率、解析失败率、平均重试次数、降级触发率——任一个异常波动都是信号。设告警失败率突破阈值就自动报警。这样“今天换了模型版本、失败率突然涨了”你能第一时间知道而不是等下游炸了才发现。留失败样本、形成闭环把每次解析失败的原始输出记下来定期回看——是提示没写清schema 太严还是模型换版了据此优化提示 / schema甚至沉淀成测试用例防止下次再犯。原则一句话宁可优雅地失败也不能把错误静默地传下去。而监控的意义不只是“报警”而是让格式可靠性可度量、可追溯、可持续改进。一句话总结光靠提示词来约束格式不可靠需要一层层保障先做简单的再上硬保证结构化输出和兜底校验重试、降级、监控——每一层都假设上一层会漏最后确保错了也不失控。