UTILITÁRIO DE SAÍDAS ESTRUTURADAS

Validador e auto-corretor JSON Schema de saídas estruturadas LLM

Cole seu JSON Schema de funções ou response_format para localizar regras que causam rejeições HTTP 400 em OpenAI, Claude e Gemini e copie o esquema estrito em um clique.

ExecuçãoSem login · 100% local no navegadorRegras de esquema conferidas em 11 de novembro de 2026
01

Validador e auto-corretor JSON Schema de saídas estruturadas

Cole seu JSON Schema de ferramenta ou response_format para detectar erros HTTP 400 e gerar automaticamente um esquema estrito.

Status da validação6 problemas bloqueantes detectados no esquema
JSON Schema estrito auto-corrigido
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 compatibilidade

  • $.additionalPropertiesO modo estrito exige definir "additionalProperties": false em todo esquema de objeto.
  • $.required (currency, customer)O modo estrito da OpenAI exige listar todas as propriedades em required; as opcionais foram convertidas em uniões anuláveis.
  • $.properties.invoiceId.patternSaídas estruturadas estritas costumam rejeitar palavras-chave de restrição de valor; mova a regra para description e valide no código com Zod ou Pydantic.
  • $.properties.totalAmount.minimumSaídas estruturadas estritas costumam rejeitar palavras-chave de restrição de valor; mova a regra para description e valide no código com Zod ou Pydantic.
  • $.properties.customer.additionalPropertiesO modo estrito exige definir "additionalProperties": false em todo esquema de objeto.
  • $.properties.customer.required (taxId)O modo estrito da OpenAI exige listar todas as propriedades em required; as opcionais foram convertidas em uniões anuláveis.
02

Referência técnica e checagens de deploy

Por que esquemas Draft-07 válidos ainda falham com HTTP 400 em APIs de LLM

Motores de decodificação restrita compilam seu JSON Schema em uma gramática livre de contexto ou máscara de tokens antes da geração. Para manter a compilação rápida e limitada, OpenAI, Anthropic e Google exigem um subconjunto de JSON Schema mais estrito do que o gerado por padrão em Ajv, Zod ou Pydantic.

Por exemplo, o modo strict: true da OpenAI rejeita objetos sem additionalProperties: false ou com propriedades fora de required — campos opcionais devem usar uniões anuláveis (["string", "null"]) mantendo-se em required. Em contrapartida, o generationConfig.responseSchema do Google Gemini rejeita totalmente a palavra-chave additionalProperties.

Regra do esquemaOpenAI Estrito (strict: true)Ferramenta / JSON estrito AnthropicGemini responseSchema
O tipo raiz deve ser "object"ObrigatórioObrigatórioRecomendado
"additionalProperties": false em todo objetoObrigatório (400 se omitido)Obrigatório (400 se omitido)Rejeitado (400 se presente)
Todas as propriedades em "required"Obrigatório (use [type, "null"] p/ opcionais)Permite chaves opcionaisPermite chaves opcionais
Regex pattern / minLength / formatNão suportado na gramática estritaLimitado; prefira description + validação no appNão suportado na maioria dos formatos

Checklist de produção para extração estruturada e esquemas de ferramentas

Corrigir rejeições gramaticais evita o HTTP 400, mas a extração confiável também depende de semântica clara no esquema. Use nomes de campos claros, evite árvores recursivas profundas e trate sempre recusas do modelo de forma explícita.

  • Mova padrões regex, limites de tamanho e faixas numéricas para description e valide-os com Zod ou Pydantic após o parse.
  • Verifique finish_reason (ou stop_reason) contra corte por max_tokens antes de JSON.parse — JSON truncado falhará mesmo no modo estrito.
  • Trate campos explícitos de recusa de segurança ou política antes de ler a saída estruturada.

Dúvidas frequentes

Como representar um campo opcional no modo estrito da OpenAI?

Inclua o nome do campo no array required do objeto e mude seu tipo para uma união anulável como ["string", "null"]. O auto-corretor acima realiza essa transformação automaticamente.

Por que o Gemini rejeita um esquema que funciona na OpenAI?

O modo estrito da OpenAI exige additionalProperties: false em todo objeto, enquanto o parser responseSchema do Gemini rejeita chaves desconhecidas como additionalProperties. Mude o seletor acima para Google Gemini para remover as chaves incompatíveis.

Ainda devo validar a resposta do LLM com Zod ou Pydantic?

Sim. A decodificação restrita garante tipos JSON e chaves obrigatórias, enquanto seu validador aplica regras de negócio como valores positivos, datas válidas e IDs autorizados.

Teste seu esquema estrito em uma rota real de modelo

Copie o JSON Schema normalizado acima e valide-o com uma requisição sem streaming na LLMFly AI.

Criar chave de API