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 esquema | OpenAI Estrito (strict: true) | Ferramenta / JSON estrito Anthropic | Gemini responseSchema |
|---|---|---|---|
| O tipo raiz deve ser "object" | Obrigatório | Obrigatório | Recomendado |
| "additionalProperties": false em todo objeto | Obrigató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 opcionais | Permite chaves opcionais |
| Regex pattern / minLength / format | Não suportado na gramática estrita | Limitado; prefira description + validação no app | Não suportado na maioria dos formatos |