Tema
Idioma

Saídas estruturadas

Force a saída JSON com response_format. Dois modos: json_object (qualquer JSON válido) e json_schema (conformidade estrita com o esquema). Exemplos em curl e Python.

O parâmetro response_format força o modelo a retornar JSON válido. Dois modos são compatíveis.

json_object mode

O modelo garante que a saída seja um JSON válido. Você define a estrutura no prompt do sistema.

curl https://getvibeapi.com/v1/chat/completions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "response_format": { "type": "json_object" },
    "messages": [
      {"role": "system", "content": "Reply with JSON with fields: name (string), score (number)."},
      {"role": "user", "content": "Rate this answer: very good"}
    ]
  }'

json_schema mode

Conformidade estrita com o JSON Schema — o modelo preenche exatamente os campos especificados. Compatível com GPT-5.x e modelos compatíveis.

curl https://getvibeapi.com/v1/chat/completions \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "review",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "score": { "type": "number", "minimum": 1, "maximum": 10 },
            "summary": { "type": "string" }
          },
          "required": ["name", "score", "summary"],
          "additionalProperties": false
        }
      }
    },
    "messages": [
      {"role": "user", "content": "Rate this product: fast delivery, careful packaging"}
    ]
  }'
Com strict: true, o gateway encaminha a solicitação somente para variantes de modelo que realmente respeitam o schema, e faz isso em todas as tentativas — inclusive ao mudar para um fornecedor de backup. Se nenhuma variante adequada estiver disponível no momento, você recebe um erro explícito de structured_output_unsupported, em vez de texto simples quando JSON foi solicitado. Essa proteção é baseada em medições e cobre apenas as variantes que medimos: em uma variante não medida, o fornecedor ainda pode descartar o schema silenciosamente.
Os modelos diferem na capacidade de manter JSON — verifique o seu. Medido em 2026-09-12 em deepseek-v4-flash-0731, 10 chamadas por célula: json_object analisou corretamente 10/10 nas variantes :cxa e :cxbc e 8/10 em :network, enquanto um json_schema estrito analisou corretamente 0/10 em ambas as variantes (:cxa retorna 400, :cxbc retorna 200 com texto simples) e 3/10 em :network. A própria API da DeepSeek não tem o modo json_schema — use json_object e, quando precisar exatamente de um formato, uma chamada de função forçada (tools + tool_choice) retornou argumentos analisáveis corretamente em 10/10 em todas as variantes. Os números por variante estão no campo structuredOutput de GET /v1/model-capabilities. Cada um é uma leitura isolada registrada com sua data (measurement: "point-in-time"), não uma promessa: o fornecedor por trás de uma variante pode mudar, e não fazemos novas medições em uma programação fixa.

Exemplo de resposta

{
  "id": "chatcmpl-...",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "{\"name\":\"product X\",\"score\":9,\"summary\":\"Fast and convenient\"}"
    },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 42, "completion_tokens": 18, "total_tokens": 60 }
}
Saídas estruturadas da GetVibe API — JSON Schema, json_object, Python | GetVibe API