主题
语言
·1 分钟阅读

JSON 模式与结构化输出:各模型支持情况一览

GetVibe API 各模型 JSON 模式对照表,json_object 与 json_schema 的区别,以及一种所有模型都适用的方案:强制工具调用。

JSON 模式与结构化输出:各模型支持情况一览

如果你的代码要解析模型的回答,就需要每次调用都能正常解析的 JSON。在 GetVibe API 上有三种方式:json_object 模式、严格的 json_schema 模式和强制工具调用。不同模型支持的方式不同。本文根据我们的目录给出对照表,并说明在什么情况下用哪种方式。

三种方式

  • response_format: {"type": "json_object"}:模型返回合法的 JSON,字段结构由你在提示中描述。
  • response_format: {"type": "json_schema", ...} 加 strict: true:模型严格按照你传入的 schema 填写字段。GPT-5.x 及兼容模型支持。
  • 强制工具调用(tools 加指定某个函数的 tool_choice):模型以 JSON 形式返回符合参数 schema 的函数参数。目录中所有文本模型都支持工具调用,所以这是可移植性最好的方案。

对照表

JSON 模式一列取自 https://getvibeapi.com/api/catalog 中的 caps.jsonMode,读取日期为 2026 年 9 月 25 日。

模型JSON 模式工具调用价格
GPT-6 Luna支持支持$0.0055 输入 · $0.0274 输出 每百万 token
GPT-6 Sol支持支持$0.1096 输入 · $0.548 输出 每百万 token
GPT-6 Astra不支持支持$0.548 输入 · $2.7398 输出 每百万 token
GPT-5.6 Sol(以及 Luna、Terra)支持支持$0.0667 输入 · $0.40 输出 每百万 token
Claude Opus 5.5支持支持$0.1067 输入 · $0.5334 输出 每百万 token
Claude Sonnet 5支持支持$0.3334 输入 · $1.6667 输出 每百万 token
Gemini 3.1 Pro支持支持$0.2515 输入 · $1.5086 输出 每百万 token
Gemini 3.8 Flash(以及 3.7 Flash)不支持支持$0.0097 输入 · $0.0483 输出 每百万 token
DeepSeek V4.1 Flash支持支持$0.0112 输入 · $0.0445 输出 每百万 token
Qwen3.8 Max(以及 3.8 Flash)支持支持$0.1543 输入 · $0.4629 输出 每百万 token
Kimi K3支持支持$0.1715 输入 · $0.8572 输出 每百万 token
MiniMax M3支持支持$0.0148 输入 · $0.0591 输出 每百万 token
Tencent Hy4 Preview支持支持$0.0334 输入 · $0.1001 输出 每百万 token
GLM-5.3(以及 5.3 Flash、5.2)不支持支持$0.10 输入 · $0.3143 输出 每百万 token

对于标为"不支持"的模型,请使用强制工具调用,或在提示中描述 JSON 结构并在你这一侧校验。

严格模式在我们这边做了什么

在 json_schema 请求中设置 strict: true 时,网关只会把请求路由到真正遵守 schema 的模型变体,每次尝试都如此,包括切换到备用通道时。如果当前没有合适的变体,你会收到明确的 structured_output_unsupported 错误,而不是在期待 JSON 的地方拿到纯文本。这项保护基于我们的实测,只覆盖我们测过的变体。

一个已知情况:DeepSeek 官方 API 没有 json_schema 模式。DeepSeek 模型请使用 json_object;需要固定结构时,使用强制工具调用。

示例

严格 schema:

from openai import OpenAI
import json

client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...")
schema = {
    "type": "object",
    "properties": {"name": {"type": "string"}, "score": {"type": "number"}},
    "required": ["name", "score"],
    "additionalProperties": False,
}
resp = client.chat.completions.create(
    model="gpt-6-luna",
    response_format={"type": "json_schema",
                     "json_schema": {"name": "review", "strict": True, "schema": schema}},
    messages=[{"role": "user", "content": "Rate this product: fast delivery, careful packaging"}],
)
print(json.loads(resp.choices[0].message.content))

强制工具调用,适用于不支持 JSON 模式的模型:

resp = client.chat.completions.create(
    model="gemini-3.8-flash",
    tools=[{"type": "function", "function": {"name": "save_review", "parameters": schema}}],
    tool_choice={"type": "function", "function": {"name": "save_review"}},
    messages=[{"role": "user", "content": "Rate this product: fast delivery, careful packaging"}],
)
args = json.loads(resp.choices[0].message.tool_calls[0].function.arguments)

始终校验

即使开启了 JSON 模式,也要在使用前按你的 schema 检查解析后的对象,失败时重试。长输出尤其需要注意:在 max_tokens 处被截断的回答就是不完整的 JSON。请检查 finish_reason,值为 length 表示回答被截断了。

下一步

阅读结构化输出文档和工具调用指南,或在我们的最便宜大模型 API 清单中找一个支持 JSON 的低价模型。

JSON 模式结构化输出response_format json_schema大模型 JSON 输出json_object 与 json_schema函数调用 JSON

免费试用 GetVibe API

通过一个 OpenAI 兼容的 API 接入 GPT、Claude、Gemini 等模型,支持信用卡或加密货币支付。

相关文章

JSON 模式与结构化输出:各模型支持情况一览 | GetVibe API