Converter um JSON Schema em saída estruturada para LLM

Cole um JSON Schema, escolha o destino e gere o trecho localmente. A página indica quais palavras-chave ficaram de fora, verifica se o modo strict da OpenAI pode ser usado e não envia nada a provedor algum.

Funciona localmente no seu navegador
Esta ferramenta processa todos os dados localmente no seu navegador.
JSON SchemaCole o JSON Schema do objeto que deseja que um LLM retorne. A ferramenta apenas converte o schema; não envia prompt, schema ou chave de API.
Trecho de integração

Como converter um JSON Schema em um trecho de saída para um LLM

A página lê um JSON Schema e escreve a configuração que cada provedor espera para saída estruturada: um response_format da OpenAI, uma definição de ferramenta da Anthropic, um generationConfig do Gemini ou uma interface TypeScript. A conversão é uma leitura local da árvore do schema: nenhum provedor é contatado e nenhuma chave de API entra em cena.

Como os quatro destinos não aceitam as mesmas palavras-chave, a linha de status lista as que o destino escolhido não consegue assumir, e o trecho é escrito sem elas. Leia essa linha antes de colar o trecho em uma requisição: um $ref ou um default descartado muda o que o modelo pode devolver.

  1. Cole o JSON Schema no painel esquerdo ou use Carregar exemplo para ver um schema com um objeto, um enum e um array aninhado.
  2. Escolha o destino: OpenAI Structured Outputs, schema de entrada de ferramenta da Anthropic, schema de resposta do Gemini ou interface TypeScript.
  3. Ajuste o nome do schema quando ele precisar coincidir com um nome de ferramenta ou de interface no seu código.
  4. Clique em Gerar trecho e leia a linha de status: ela repete o que ficou de fora, se o modo strict da OpenAI era possível e se o nome precisou ser ajustado.
  5. Copie ou baixe o resultado e clique em Limpar antes de trabalhar no próximo schema.

O que cada destino recebe e o que este conversor não leva

O que cada destino recebe

A OpenAI recebe um objeto response_format com um bloco json_schema; a marca strict só é escrita como true quando cada objeto do schema define additionalProperties como false e lista todas as propriedades em required, porque é essa a forma que a OpenAI aceita no modo strict. Caso contrário, o trecho leva strict: false e um comentário explica por quê.

A Anthropic recebe um objeto tool cujo input_schema é o schema convertido, pronto para o array tools. O Gemini recebe um responseSchema com tipos em maiúsculas, const convertido em enum de valor único e uma união anulável convertida em nullable. O TypeScript recebe uma interface cujos nomes de propriedade coincidem exatamente com as chaves JSON: chaves que não são identificadores válidos ficam entre aspas, uniões como type: ["string","null"] sobrevivem, e uma raiz que não é objeto vira um alias export type.

Palavras-chave que ficam de fora

Palavras-chave de composição e referência exigem um resolvedor, então $ref, $defs, anyOf, oneOf, allOf, not, if/then/else, patternProperties e prefixItems não entram em nenhum destino. As restrições que as saídas da OpenAI e da Anthropic mantêm, como pattern, format, minimum ou maxLength, são avisadas no Gemini, que aceita um schema mais estreito.

O aninhamento é seguido até oito níveis abaixo da raiz; o que é mais profundo vira um schema vazio e a linha de status avisa. No TypeScript também não há lugar para restrições como minLength ou pattern: um tipo descreve a forma e não valida, então elas não fazem parte da interface.

Nomes, falhas e privacidade

O nome do schema é reduzido a letras, dígitos, hífens e sublinhados; campo vazio vira structured_response, nomes com mais de 64 caracteres são encurtados nos destinos de provedor, e uma interface TypeScript também recebe um identificador válido, então um dígito inicial vira _123report. Sempre que o texto precisa mudar, a linha de status mostra o nome realmente usado.

Quando uma execução não consegue produzir o trecho — entrada vazia, JSON malformado, um array ou um objeto sem type nem properties — o motivo é informado, com linha e coluna nos erros de JSON, e o painel de saída é esvaziado, para que um trecho anterior nunca seja confundido com o atual. Nada é enviado: o schema, o código gerado e o nome ficam no navegador.

Ferramentas recentes: