UTILIDAD DE SALIDAS ESTRUCTURADAS

Validador y auto-reparador JSON Schema de salidas estructuradas LLM

Pega tu JSON Schema de funciones o response_format para localizar las reglas que causan rechazos HTTP 400 en OpenAI, Claude y Gemini, y copia el esquema estricto en un clic.

EjecuciónSin registro · 100% local en navegadorReglas de esquema verificadas el 11 de noviembre de 2026
01

Validador y auto-reparador JSON Schema de salidas estructuradas

Pega tu JSON Schema de herramientas o response_format para detectar errores HTTP 400 y generar automáticamente un esquema estricto.

Estado de validaciónSe detectaron 6 problemas bloqueantes en el esquema
JSON Schema estricto auto-reparado
request.example
{
  "type": "object",
  "properties": {
    "invoiceId": {
      "type": "string"
    },
    "currency": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "USD",
        "EUR",
        "GBP"
      ]
    },
    "totalAmount": {
      "type": "number"
    },
    "customer": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "taxId": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "name",
        "taxId"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "invoiceId",
    "currency",
    "totalAmount",
    "customer"
  ],
  "additionalProperties": false
}

Diagnóstico de compatibilidad

  • $.additionalPropertiesEl modo estricto exige definir "additionalProperties": false en cada esquema de objeto.
  • $.required (currency, customer)El modo estricto de OpenAI exige incluir todas las propiedades en required; las opcionales se convirtieron en uniones anulables.
  • $.properties.invoiceId.patternLas salidas estructuradas estrictas suelen rechazar palabras clave de restricción de valores; mueve la regla a description y valídala en tu código con Zod o Pydantic.
  • $.properties.totalAmount.minimumLas salidas estructuradas estrictas suelen rechazar palabras clave de restricción de valores; mueve la regla a description y valídala en tu código con Zod o Pydantic.
  • $.properties.customer.additionalPropertiesEl modo estricto exige definir "additionalProperties": false en cada esquema de objeto.
  • $.properties.customer.required (taxId)El modo estricto de OpenAI exige incluir todas las propiedades en required; las opcionales se convirtieron en uniones anulables.
02

Referencia técnica y controles de despliegue

Por qué esquemas Draft-07 válidos fallan con HTTP 400 en las APIs de LLM

Los motores de decodificación restringida compilan tu JSON Schema en una gramática libre de contexto o máscara de tokens antes de generar. Para mantener la compilación rápida y acotada, OpenAI, Anthropic y Google exigen un subconjunto de JSON Schema más estricto que el generado por defecto en Ajv, Zod o Pydantic.

Por ejemplo, el modo strict: true de OpenAI rechaza cualquier objeto sin additionalProperties: false o con propiedades fuera de required, por lo que los campos opcionales deben declararse como uniones anulables (["string", "null"]) dentro de required. Por el contrario, generationConfig.responseSchema de Google Gemini rechaza por completo la palabra clave additionalProperties.

Regla del esquemaOpenAI Estricto (strict: true)Herramienta / JSON estricto AnthropicGemini responseSchema
El tipo raíz debe ser "object"ObligatorioObligatorioRecomendado
"additionalProperties": false en cada objetoObligatorio (400 si falta)Obligatorio (400 si falta)Rechazado (400 si aparece)
Todas las propiedades en "required"Obligatorio (usa [type, "null"] en opcionales)Permite claves opcionalesPermite claves opcionales
Regex pattern / minLength / formatNo admitido en gramática estrictaLimitado; usa description + validación propiaNo admitido en la mayoría de formatos

Lista de control en producción para extracción estructurada y herramientas

Corregir rechazos gramaticales evita el HTTP 400, pero una extracción fiable también requiere semántica clara dentro del esquema. Usa nombres de campo claros, evita árboles recursivos profundos y gestiona siempre de forma explícita las negativas del modelo.

  • Mueve patrones regex, límites de longitud y rangos numéricos a description y valídalos con Zod o Pydantic tras parsear.
  • Revisa finish_reason (o stop_reason) por truncamiento de max_tokens antes de JSON.parse; un JSON truncado fallará incluso en modo estricto.
  • Gestiona los campos explícitos de rechazo por seguridad o políticas antes de leer la salida estructurada.

Preguntas frecuentes

¿Cómo represento un campo opcional en el modo estricto de OpenAI?

Incluye el nombre del campo en el array required del objeto y cambia su tipo a una unión anulable como ["string", "null"]. El auto-reparador de arriba realiza esta transformación automáticamente.

¿Por qué Gemini rechaza un esquema que funciona en OpenAI?

El modo estricto de OpenAI exige additionalProperties: false en cada objeto, mientras que el parser responseSchema de Gemini rechaza palabras clave no reconocidas como additionalProperties. Cambia el selector superior a Google Gemini para eliminar las claves incompatibles.

¿Debo seguir validando la respuesta del LLM con Zod o Pydantic?

Sí. La decodificación restringida asegura tipos JSON y claves requeridas, mientras que tu validador garantiza invariantes de negocio como importes positivos, fechas válidas e IDs autorizados.

Prueba tu esquema estricto en una ruta de modelo real

Copia el JSON Schema normalizado de arriba y valídalo con una solicitud sin streaming en LLMFly AI.

Crear clave API