天枢星通Docs
进阶能力

结构化输出

response_format 的 json_schema 用法、严格模式(strict)语义、模型不支持时的失败回退建议,以及完整请求与响应 JSON 示例

平台数据平面兼容 OpenAI 规范的结构化输出:通过 response_format 声明一个 JSON Schema,约束模型必须返回符合该 schema 的 JSON,从而让您的应用稳定解析模型输出,免去对自由文本的脆弱正则抽取。本页说明 response_formatjson_schema 用法、严格模式(strict)语义、模型不支持时的失败回退建议,以及完整示例。

适用场景。 当您需要把模型输出直接喂给下游程序(写库、调接口、填表单、做分类标注)时,结构化输出能把"模型返回什么形状"这件事固定下来,显著降低解析失败率。它常与 工具调用 配合:工具调用让模型"做动作",结构化输出让模型"按格式给结论"。

1. response_format 用法

/v1/chat/completions 请求体中加入 response_format 字段,类型设为 "json_schema",并在 json_schema 对象中给出 schema:

{
  "model": "<模型名>",
  "messages": [
    { "role": "system", "content": "你是一名严谨的工单分类助手。" },
    { "role": "user", "content": "把这条反馈归类并抽取要点:『登录后页面一直转圈,多次重试都进不去』" }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "ticket_classification",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": ["功能异常", "性能问题", "使用咨询", "其他"]
          },
          "severity": {
            "type": "string",
            "enum": ["高", "中", "低"]
          },
          "summary": {
            "type": "string",
            "description": "一句话概括反馈要点"
          }
        },
        "required": ["category", "severity", "summary"],
        "additionalProperties": false
      }
    }
  }
}

json_schema 对象各字段:

字段含义
name本结构的命名,便于您在多种结构间区分;建议用小写下划线命名
strict是否启用严格模式(见第 2 节);建议置 true 以获得稳定结构
schema标准 JSON Schema 定义,描述期望返回的字段、类型与约束

三类常用约束。 enum 限定取值集合(适合分类 / 枚举字段),required 列出必填字段,additionalProperties: false 禁止模型返回 schema 之外的多余字段。三者配合能把输出形状收得很紧。

2. 严格模式(strict)语义

strict 控制模型对 schema 的遵循程度:

strict语义
true严格模式:模型输出必须完全符合 schema——字段齐全、类型匹配、不含 schema 外的多余字段;适合直接喂给下游程序
false 或省略宽松模式:模型尽力返回 JSON,但不保证逐字段严格符合 schema;适合容错性较高的场景

严格模式下的几点行为约定:

  • 结构稳定可解析。 严格模式旨在保证返回内容为可解析的 JSON 且字段形状符合 schema,您的应用可直接 JSON.parse 后按字段取值,无需对自由文本兜底。
  • schema 需自洽。 严格模式要求 schema 本身规范、自洽(如 required 字段须在 properties 中声明);schema 不自洽可能导致约束无法生效。
  • 配合 system 提示更稳。 建议在 system 消息中简要说明任务与字段含义,与 schema 双重约束,进一步降低字段语义偏差。

3. 读取结构化响应

结构化输出的最终内容仍承载在标准 message.content 中,但其值为符合 schema 的 JSON 字符串

{
  "object": "chat.completion",
  "model": "<本次实际路由的模型名>",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\"category\":\"功能异常\",\"severity\":\"\",\"summary\":\"登录后页面持续加载,多次重试无法进入\"}"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 0,
    "completion_tokens": 0,
    "total_tokens": 0,
    "cached_input_tokens": 0,
    "price_tier": "<本次适用单价档>",
    "thinking": false
  }
}
读取要点说明
content 为 JSON 字符串message.content 是 JSON 文本,需在本地 JSON.parse 后按字段使用
计量口径不变结构化输出的输入 / 输出统一计价词元仍按常规 6 档口径 计量,与普通查询一致
可叠加流式结构化输出可与流式(stream: true)配合,但分片中途的 JSON 可能不完整,须在所有分片拼接完成后再解析

4. 失败回退建议

并非所有模型都支持结构化输出 / 严格模式;同时,即便支持,也应在应用侧对解析做兜底。建议按以下顺序处理:

情形建议处理
模型不支持结构化输出模型列表接口 返回的能力标注为准选择模型;对不支持的模型,平台会按其能力据实处理,您应在应用侧改用提示词约束 + 容错解析
返回内容无法解析为 JSON本地 JSON.parse 失败时,回退到一次"重试请求"或宽松解析;不要把未校验内容直接写入下游
JSON 可解析但字段不全对缺失的 required 字段做默认值兜底,或携带原始反馈重试一次(可在 system 中强调字段必填)
反复无法得到合规结构降级为宽松模式(strict: false)+ 应用侧抽取,或改用 工具调用 让模型按函数参数 schema 产出结构化入参

务实策略。 把结构化输出当作"大幅提高合规率的手段"而非"100% 保证"。生产链路中始终保留一层应用侧校验与回退:先按 schema 解析,解析或校验失败再走重试 / 降级路径,确保下游不被异常结构污染。

5. 与工具调用的取舍

结构化输出与 工具调用 都能让模型产出结构化数据,适用场景不同:

您想要的推荐
让模型直接给出一份固定形状的结论 JSON(分类、抽取、打分等)结构化输出(response_format
让模型决定调用哪个函数、传什么参数,由您执行后回填工具调用(tools / tool_calls
既要模型调用外部能力、又要最终结论按固定结构返回两者配合:工具调用取数 + 结构化输出收口结论

相关链接

章节内容
快速接入指南统一入口、OpenAI 协议兼容性与模型列表接口
工具调用tools / tool_choice 参数与多轮工具结果回填
深度推理复杂结构抽取可结合 thinking 档提升准确度
用量明细与计量说明结构化输出的逐条计量与可核验计数
安全防护输入 / 输出侧护栏处置与误拒说明

On this page