Reparar a saída JSON de um LLM: lidar com o quase-JSON da IA

Os LLMs frequentemente retornam JSON envolto em cercas ```json, com aspas simples, literais do Python ou chaves sem aspas. Repare a sintaxe, valide de forma rigorosa e depois derive tipos do TypeScript da saída limpa.

Quando você chega aqui

Um LLM retornou JSON que o JSON.parse rejeita. Os culpados mais comuns são as cercas de código markdown que envolvem o documento, as aspas simples, as chaves sem aspas, os literais do Python como True/None e os objetos serializados. Repare a sintaxe e depois valide de forma rigorosa antes de entregar o resultado ao seu app.

O fluxo de reparo para a saída de um LLM

Execute o reparo primeiro — ele tolera cercas, aspas simples, chaves sem aspas, literais do Python e vírgulas finais. Valide em segundo lugar para confirmar que o texto limpo faz a ida e volta. Use a árvore limpa para derivar tipos ou alimentar o seu app.

Assim que analisar, derive tipos

Depois que a saída do LLM for validada, derive interfaces TypeScript ou um JSON Schema para que a próxima chamada tenha um contrato a validar. Essa é a diferença entre reparar uma vez e reparar para sempre.

O que vem nos padrões

Duas próximas propostas do JavaScript importam para os fluxos de JSON dos LLMs: o acesso à fonte no JSON.parse (ler erros com o texto original ao lado do valor) e o JSON.parseImmutable. Elas reduzem a quantidade de código de reparo sob medida que vive em cada app.

Caminho recomendado

Cole a saída do LLM, limpe-a, tipifique-a.

    1. Ferramenta: / — cole a saída da IA, clique em «Reparar e formatar».
    1. Guia: /guides/repair-llm-json-output — lida com cercas, aspas, literais do Python.
    1. Blog: /blog/repair-broken-json-in-javascript — o mesmo fluxo em código.
    1. Referência: /news/json-parse-source-access-baseline-2025 — qual suporte padrão está chegando.