Structured Output
为什么需要 Structured Output
模型默认输出是一段自由文本——人能看懂,但程序很难稳定地继续处理。
你需要的是:
- 把结果写入数据库
- 交给前端组件直接渲染
- 触发下一步自动化流程
- 对字段逐项校验
这些都需要程序能"读懂"模型的输出。Structured Output 就是让模型的输出从"一段话"变成"一份结构化数据"。
什么是 Structured Output
一句话定义:Structured Output 是让模型按预定义结构返回结果的能力,比如 JSON、对象字段、固定枚举值,而不是一段自由文本。
两种常见实现方式:
Tool Calling / Function Calling(推荐):让模型调用一个"假工具",工具参数本身就是结构化数据。
JSON Mode:直接要求模型用 JSON 格式回答。
这背后依赖的是 Function Schema 来定义输出结构。
怎么做:什么时候用
适合用 Structured Output 的场景:
- 数据提取:从非结构化文本中提取结构化数据(简历解析、发票识别)
- API 响应:Agent 的输出需要被程序继续处理
- 多字段回答:一次回答多个字段(标题、描述、标签)
- 分类与路由:判断意图类别、优先级
常见坑
- JSON Mode 不保证格式正确:模型可能输出不完整 JSON,需要配合验证和重试
- Tool Calling 更可靠:因为工具参数有 Schema 约束,格式通常更稳定
- 结构越复杂,模型越容易出错:嵌套层数高时错误率会上升
- 格式正确不代表语义正确:字段名可能都对,但字段值仍然可能胡编
记住这一句:Structured Output 让模型输出从"一段话"变成"一份数据"——程序能读,才能继续处理。
相关词条:Function Schema · Tool Calling
标签
结构化输出structured outputjson moderesponse_format