能力概述
结构化输出(Structured Outputs)让模型的回复严格遵循你定义的 JSON Schema,确保返回值可以直接被程序解析,无需正则或后处理。 与在 prompt 中要求模型”请返回 JSON”不同,结构化输出基于受约束解码(Constrained Decoding):上游将 JSON Schema 编译为语法规则,在推理过程中逐 token 约束生成,模型不可能产出违反 Schema 的内容。 典型场景:- 从非结构化文本中提取实体和字段
- 分类 / 打标签 / 情感分析
- 多步推理中间结果的标准化传递
- Agent 工具调用参数的强类型约束
各协议参数对照
三种协议的参数名不同,但底层机制一致:模型输出严格匹配你提供的 JSON Schema。
快速开始
OpenAI 协议(推荐)
适用于所有支持结构化输出的模型,跨厂商通用。使用其他模型(GLM-5.2 示例)
同一套 OpenAI 协议参数适用于所有支持结构化输出的模型,切换model 即可。
Python
Claude 原生协议
使用 Anthropic SDK 直接调用,参数为output_config.format。
Schema 编写要点
必需字段
所有object 类型必须显式声明 additionalProperties: false,否则部分上游会拒绝请求。
嵌套对象
嵌套的object 同样需要 additionalProperties: false:
跨协议 Schema 差异
自动降级机制
网关默认为所有请求开启结构化输出的自动降级保护。当模型或平台不支持时,网关不会返回错误,而是自动剥离 Schema 约束并在响应头中标记降级原因。你的请求仍然会得到正常的模型回复,只是输出不受 Schema 强制约束。 这意味着你可以放心地在客户端统一启用结构化输出,而无需针对每个模型做兼容判断:- 多模型切换无忧:同一套代码在 Claude、GPT、Gemini、GLM 之间切换模型时,即使目标模型不支持结构化输出,请求也不会报错
- 兜底透明:即使实际处理请求的模型版本不支持结构化输出,请求仍然正常完成,仅通过响应头标记降级
- 客户端逻辑简化:不需要维护一份”哪些模型支持结构化输出”的列表,网关已自动处理;客户端只需检查响应头决定是否需要额外解析
响应头
检测示例
Python
与 json_object 模式的区别
常见问题
哪些模型支持 Structured Outputs?
哪些模型支持 Structured Outputs?
Claude 系列(通过 Anthropic API 的
output_config.format):- Opus / Sonnet / Haiku 4.5 及以上版本
- Fable / Mythos 5 及以上版本 OpenAI 系列(通过
response_format): - GPT-4o 及以上、GPT-5 系列
responseSchema):- Gemini 2.5 及以上
跨协议调用时 JSON Schema 会被修改吗?
跨协议调用时 JSON Schema 会被修改吗?
会。当通过 OpenAI 协议调用 Claude 模型时,网关自动:
- 将
response_format转换为output_config.format - 移除 Anthropic 不支持的 Schema 关键字(
minimum、maxLength等) - 如果有关键字被清理,响应头标记
schema_keywords_stripped
Structured Outputs 可以和 Extended Thinking 同时使用吗?
Structured Outputs 可以和 Extended Thinking 同时使用吗?
可以。
output_config 中的 format(结构化输出)和 reasoning 中的 effort(思考强度)是独立参数,可以同时设置:与 OpenRouter 等聚合平台相比,降级机制有什么不同?
与 OpenRouter 等聚合平台相比,降级机制有什么不同?
大多数 API 聚合平台在模型不支持结构化输出时会直接返回错误。AIHubMix 采用优雅降级策略:自动剥离不兼容的参数,正常返回模型响应,并通过
X-Structured-Output-Degraded 响应头告知客户端降级原因。你的应用不会因此中断。