协议

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