AI Agent 工程 · 01
01.3 Structured Output:让 AI 输出标准格式
不要用自然语言猜测下一步:用结构化输出把模型建议变成可校验、可路由的业务数据。
知识定位
这是模型层到工具层的接口课。下一章 Tool Calling 会让模型选择工具;本节先让它输出程序能稳定读取的数据。
一句话定义
**结构化输出(Structured Output)**是要求模型按预先定义的数据结构返回结果,例如 JSON 对象,而不是把“订单号大概是 XB-1024”藏在一段自然语言里。
{"intent":"order_lookup","order_id":"XB-1024","needs_human":false}
为什么存在
程序可以校验 intent 是否属于允许列表、order_id 是否匹配格式、缺字段时如何追问。校验失败就停止,而不是把一段含糊的文本拼进数据库查询。结构化输出提高接口稳定性,但不让模型自动可信:它仍可能填错值,仍要做服务端验证和授权。
外贸案例
对“Can I get a refund for XB-1024?”,系统可先提取 intent、order_id 和 language。随后后端验证订单号、用户身份和退款窗口。模型没有资格把 needs_human 设为 false 后直接退款。
实践任务
输入:把三句客户话分别转成 intent、order_id、question 三个字段。执行:为每个字段写一个校验规则。预期输出:字段表。验收标准:当订单号缺失或格式非法时,流程只能追问或停止,不能查询。
主动回忆
模型返回合法 JSON,是否就证明其中的订单号真实存在?为什么?
纸质笔记
- 必须记:格式正确不等于事实正确。
- 建议记:先定义允许值,再写校验与失败路径。
- 不用记:任意 SDK 的具体函数名。