Tema
Idioma
·3 min de leitura

Modo JSON e saídas estruturadas: quais modelos são compatíveis com cada recurso

Uma matriz modelo a modelo do modo JSON na GetVibe API, a diferença entre json_object e json_schema e uma alternativa compatível com todos os modelos: chamadas de ferramenta forçadas.

Modo JSON e saídas estruturadas: quais modelos são compatíveis com cada recurso

Se o seu código analisa a resposta do modelo, você precisa de um JSON que seja analisável em todas as chamadas. Há três maneiras de obter isso no GetVibe API: o modo json_object, o modo estrito json_schema e as chamadas de ferramenta forçadas. Os modelos diferem quanto às opções compatíveis. Este artigo apresenta a matriz do nosso catálogo e mostra qual abordagem usar em cada caso.

As três abordagens

  • response_format: {"type": "json_object"}: o modelo retorna um JSON válido. Você descreve os campos no prompt.
  • response_format: {"type": "json_schema", ...} com strict: true: o modelo preenche exatamente o schema que você envia. Compatível com GPT-5.x e modelos compatíveis.
  • Chamada de ferramenta forçada (tools mais tool_choice nomeando uma função): o modelo retorna os argumentos da função como JSON compatível com o schema de parâmetros da função. Todos os modelos de texto do nosso catálogo são compatíveis com chamadas de ferramentas, então esta é a opção portátil.

A matriz

A coluna do modo JSON corresponde a caps.jsonMode de https://getvibeapi.com/api/catalog, consultado em 25 de setembro de 2026.

ModeloModo JSONChamadas de ferramentasPreço
GPT-6 Lunasimsim$0.0055 entrada · $0.0274 saída por 1M de tokens
GPT-6 Solsimsim$0.1096 entrada · $0.548 saída por 1M de tokens
GPT-6 Astranãosim$0.548 entrada · $2.7398 saída por 1M de tokens
GPT-5.6 Sol (também Luna, Terra)simsim$0.0667 entrada · $0.40 saída por 1M de tokens
Claude Opus 5.5simsim$0.1067 entrada · $0.5334 saída por 1M de tokens
Claude Sonnet 5simsim$0.3334 entrada · $1.6667 saída por 1M de tokens
Gemini 3.1 Prosimsim$0.2515 entrada · $1.5086 saída por 1M de tokens
Gemini 3.8 Flash (também 3.7 Flash)nãosim$0.0097 entrada · $0.0483 saída por 1M de tokens
DeepSeek V4.1 Flashsimsim$0.0112 entrada · $0.0445 saída por 1M de tokens
Qwen3.8 Max (também 3.8 Flash)simsim$0.1543 entrada · $0.4629 saída por 1M de tokens
Kimi K3simsim$0.1715 entrada · $0.8572 saída por 1M de tokens
MiniMax M3simsim$0.0148 entrada · $0.0591 saída por 1M de tokens
Tencent Hy4 Previewsimsim$0.0334 entrada · $0.1001 saída por 1M de tokens
GLM-5.3 (também 5.3 Flash, 5.2)nãosim$0.10 entrada · $0.3143 saída por 1M de tokens

Para os modelos marcados como "não", use uma chamada de ferramenta forçada ou descreva o JSON no prompt e valide-o do seu lado.

O que o modo estrito faz do nosso lado

Com strict: true em uma solicitação json_schema, o gateway roteia a solicitação somente para variantes de modelo que realmente respeitam o schema. Isso é feito em todas as tentativas, inclusive ao alternar para um backup. Se nenhuma variante adequada estiver disponível, você recebe um erro explícito structured_output_unsupported em vez de texto simples quando era esperado um JSON. Essa proteção é baseada nas nossas medições e abrange apenas as variantes que medimos.

Um caso conhecido: a própria API da DeepSeek não oferece o modo json_schema. Para modelos DeepSeek, use json_object ou uma chamada de ferramenta forçada quando você precisar exatamente de um único formato.

Exemplos

Schema estrito:

from openai import OpenAI
import json

client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...")
schema = {
    "type": "object",
    "properties": {"name": {"type": "string"}, "score": {"type": "number"}},
    "required": ["name", "score"],
    "additionalProperties": False,
}
resp = client.chat.completions.create(
    model="gpt-6-luna",
    response_format={"type": "json_schema",
                     "json_schema": {"name": "review", "strict": True, "schema": schema}},
    messages=[{"role": "user", "content": "Rate this product: fast delivery, careful packaging"}],
)
print(json.loads(resp.choices[0].message.content))

Chamada de ferramenta forçada, que funciona em modelos sem modo JSON:

resp = client.chat.completions.create(
    model="gemini-3.8-flash",
    tools=[{"type": "function", "function": {"name": "save_review", "parameters": schema}}],
    tool_choice={"type": "function", "function": {"name": "save_review"}},
    messages=[{"role": "user", "content": "Rate this product: fast delivery, careful packaging"}],
)
args = json.loads(resp.choices[0].message.tool_calls[0].function.arguments)

Valide sempre

Mesmo com o modo JSON ativado, verifique o objeto analisado em relação ao seu schema antes de usá-lo e tente novamente em caso de falha. Isso é especialmente importante em saídas longas, nas quais uma resposta interrompida em max_tokens resulta em um JSON truncado. Verifique finish_reason: length significa que a resposta foi interrompida.

Próximos passos

Leia a documentação sobre saídas estruturadas e o guia de chamadas de ferramentas ou encontre um modelo de baixo custo compatível com JSON na nossa lista das APIs de LLM mais baratas.

modo JSONsaídas estruturadasresponse_format json_schemasaída JSON de LLMjson_object vs json_schemachamadas de função em JSON

Experimente GetVibe API gratuitamente

GPT, Claude, Gemini e muito mais por meio de uma única API compatível com OpenAI. Pague em USD com cartão ou criptomoedas.

Artigos relacionados

Modo JSON e saídas estruturadas: quais modelos são compatíveis com cada recurso | GetVibe API