Tema
Idioma
·3 min de lectura

Modo JSON y salidas estructuradas: qué admite cada modelo

Una matriz modelo por modelo del modo JSON en GetVibe API, la diferencia entre json_object y json_schema, y una alternativa que funciona en todos: las llamadas forzadas a herramientas.

Modo JSON y salidas estructuradas: qué admite cada modelo

Si tu código analiza la respuesta del modelo, necesitas un JSON que se pueda parsear en cada llamada. En GetVibe API hay tres formas de conseguirlo: el modo json_object, el modo estricto json_schema y las llamadas forzadas a herramientas. Los modelos difieren en cuáles admiten. Este artículo presenta la matriz según nuestro catálogo y muestra qué enfoque usar en cada caso.

Los tres enfoques

  • response_format: {"type": "json_object"}: el modelo devuelve JSON válido. Tú describes los campos en el prompt.
  • response_format: {"type": "json_schema", ...} con strict: true: el modelo rellena exactamente el esquema que le pasas. Lo admiten GPT-5.x y los modelos compatibles.
  • Llamada forzada a herramienta (tools más tool_choice con una función concreta): el modelo devuelve los argumentos de la función como JSON según el esquema de parámetros. Todos los modelos de texto de nuestro catálogo admiten llamadas a herramientas, así que esta es la opción portable.

La matriz

La columna de modo JSON es caps.jsonMode de https://getvibeapi.com/api/catalog, leído el 25 de septiembre de 2026.

ModeloModo JSONHerramientasPrecio
GPT-6 Lunasísí$0.0055 entrada · $0.0274 salida por 1M de tokens
GPT-6 Solsísí$0.1096 entrada · $0.548 salida por 1M de tokens
GPT-6 Astranosí$0.548 entrada · $2.7398 salida por 1M de tokens
GPT-5.6 Sol (también Luna y Terra)sísí$0.0667 entrada · $0.40 salida por 1M de tokens
Claude Opus 5.5sísí$0.1067 entrada · $0.5334 salida por 1M de tokens
Claude Sonnet 5sísí$0.3334 entrada · $1.6667 salida por 1M de tokens
Gemini 3.1 Prosísí$0.2515 entrada · $1.5086 salida por 1M de tokens
Gemini 3.8 Flash (también 3.7 Flash)nosí$0.0097 entrada · $0.0483 salida por 1M de tokens
DeepSeek V4.1 Flashsísí$0.0112 entrada · $0.0445 salida por 1M de tokens
Qwen3.8 Max (también 3.8 Flash)sísí$0.1543 entrada · $0.4629 salida por 1M de tokens
Kimi K3sísí$0.1715 entrada · $0.8572 salida por 1M de tokens
MiniMax M3sísí$0.0148 entrada · $0.0591 salida por 1M de tokens
Tencent Hy4 Previewsísí$0.0334 entrada · $0.1001 salida por 1M de tokens
GLM-5.3 (también 5.3 Flash y 5.2)nosí$0.10 entrada · $0.3143 salida por 1M de tokens

En los modelos marcados con "no", usa una llamada forzada a herramienta, o describe el JSON en el prompt y valídalo en tu lado.

Qué hace el modo estricto en nuestro lado

Con strict: true en una solicitud json_schema, la pasarela enruta solo a variantes de modelo que realmente respetan el esquema. Lo hace en cada intento, incluido un cambio a un respaldo. Si no hay ninguna variante adecuada disponible, recibes un error explícito structured_output_unsupported en lugar de texto plano donde esperabas JSON. Esta protección se basa en nuestras mediciones y cubre solo las variantes que hemos medido.

Un caso conocido: la API propia de DeepSeek no tiene modo json_schema. Con los modelos DeepSeek, usa json_object, o una llamada forzada a herramienta cuando necesites exactamente una forma.

Ejemplos

Esquema estricto:

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))

Llamada forzada a herramienta, que funciona en modelos sin modo 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)

Valida siempre

Aunque el modo JSON esté activado, comprueba el objeto parseado contra tu esquema antes de usarlo y reintenta si falla. Esto importa sobre todo en salidas largas, donde una respuesta cortada en max_tokens es un JSON truncado. Revisa finish_reason: length significa que la respuesta se cortó.

Siguientes pasos

Lee la documentación de salidas estructuradas y la guía de llamadas a herramientas, o busca un modelo económico con JSON en nuestra lista de las APIs de LLM más baratas.

modo JSONsalidas estructuradasresponse_format json_schemasalida JSON de LLMjson_object vs json_schemafunction calling JSON

Prueba GetVibe API gratis

GPT, Claude, Gemini y más a través de una única API compatible con OpenAI. Paga en USD con tarjeta o criptomonedas.

Artículos relacionados

Modo JSON y salidas estructuradas: qué admite cada modelo | GetVibe API