max_tokens, traz vírgulas finais ou o conteúdo vem empacotado em um bloco de código Markdown. Normalmente, a aplicação precisa escrever lógica de retentativa ou de correção manual para lidar com isso.
O Reparo de saída estruturada (Structured Output Repair) é uma capacidade em nível de Key, desativada por padrão. Uma vez ativada, para requisições não-streaming que declaram saída JSON estruturada, quando o JSON retornado pelo modelo apresenta erros de formato, o gateway da AIHubMix o corrige automaticamente para um JSON válido e analisável antes de retornar; o código do cliente não precisa de nenhuma alteração.
Esse controle vem desativado por padrão; quando não está ativado, todas as respostas são retornadas sem alterações. O controle é configurado de forma independente por Key e passa a valer imediatamente após a ativação.
Ir para a página de gerenciamento de Keys para configurar
Crie ou edite uma Key e ative o controle «Reparo de saída estruturada» (Structured Output Repair).

1. Condições de ativação
O reparo só ocorre quando todas as condições abaixo são atendidas:- A Key usada na requisição já tem o «Reparo de saída estruturada» ativado.
- A requisição é não-streaming (sem
stream: true). - A requisição declara saída JSON estruturada (os campos de declaração de cada protocolo estão na tabela abaixo).
- O conteúdo de texto retornado pelo modelo não pode ser analisado como JSON.
Quando o conteúdo já é um JSON válido, nada é alterado e ele é retornado como está.
2. Erros de formato que podem ser reparados
Truncamento da saída deixando colchetes / aspas não fechados (por exemplo,finish_reason igual a length):
Antes
Depois
Antes
Depois
Antes
Depois
Antes
Depois
Antes
Depois
Antes
Depois
- O reparo apenas completa ou normaliza a sintaxe do JSON; os valores numéricos e o conteúdo das strings permanecem no texto original, sem perda de precisão ou reescrita.
- O produto do reparo precisa ser um objeto ou array JSON válido, e a diferença em relação ao texto original deve estar dentro de uma faixa razoável; se qualquer condição não for atendida, o reparo é abandonado e o conteúdo original é retornado como está.
3. Como saber se uma resposta foi reparada
Quando o reparo ocorre, há dois sinais programáveis / consultáveis:- Cabeçalho de resposta
X-JSON-Repaired: true(quando não há reparo, esse cabeçalho não existe). - Observação no log de chamadas: na página de registros de chamadas, a coluna de observação da requisição correspondente exibe
This request gateway automatically corrected the JSON format issue in the model output.
4. Exemplo completo
Tomando como exemplo a geração de informações de produto, a requisição usajson_schema para declarar a saída estruturada; com o controle ativado, mesmo que a saída do modelo apresente os erros de formato descritos acima, o content obtido pode ser analisado diretamente:
max_tokens com um valor baixo (como 80) para que a saída seja truncada: o finish_reason da resposta será length, o content será o JSON válido já reparado e o cabeçalho de resposta trará X-JSON-Repaired: true.
5. Limites e observações
- Reparo de sintaxe: se os nomes e tipos dos campos correspondem ao seu schema ainda precisa ser validado pela aplicação.
- Parâmetros de chamada de ferramentas fora do escopo do reparo: o JSON dos parâmetros de
tool_calls/function_callnão é reparado; os parâmetros de ferramentas devem sempre ser validados pela aplicação antes da execução. - Saída com múltiplos blocos de texto não é reparada: quando a saída do modelo contém vários blocos de texto (por exemplo, o Gemini retornando vários
parts), ela é retornada como está. - Conteúdo de raciocínio não é afetado: textos de raciocínio como
reasoning_contente a parte de thought do Gemini não participam do reparo.
Perguntas frequentes (FAQ)
O reparo altera os valores numéricos ou o texto do conteúdo retornado? Não. O reparo apenas completa ou normaliza a sintaxe do JSON (completa colchetes de fechamento, remove vírgulas finais, normaliza aspas, remove marcadores de bloco de código); os valores numéricos e o conteúdo das strings permanecem no texto original da saída do modelo. Ativar o controle afeta requisições comuns que não declaram saída estruturada? Não. Requisições que não declaram campos de saída estruturada comoresponse_format, bem como todas as requisições em streaming, têm suas respostas retornadas como estão.
O reparo gera cobrança adicional ou altera o uso de tokens?
Não. O uso de tokens e a cobrança são calculados com base na saída original do modelo; o processo de reparo não gera custo adicional.
O JSON reparado certamente corresponde ao schema que defini?
O reparo garante que o conteúdo possa ser analisado como JSON; se os nomes e tipos dos campos correspondem ao schema depende da própria saída do modelo, por isso recomenda-se manter a validação do schema na aplicação.