Tema
Idioma

Salidas estructuradas

Fuerza la salida JSON con response_format. Dos modos: json_object (cualquier JSON válido) y json_schema (conformidad estricta con el esquema). Ejemplos en curl y Python.

El parámetro response_format obliga al modelo a devolver JSON válido. Se admiten dos modos.

json_object mode

El modelo garantiza que el resultado sea un JSON válido. Tú defines la estructura en el prompt del 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

Cumplimiento estricto del esquema JSON: el modelo completa exactamente los campos especificados. Compatible con GPT-5.x y modelos compatibles.

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"}
    ]
  }'
Con strict: true, la pasarela dirige la solicitud únicamente a las variantes del modelo que realmente respetan el esquema, y lo hace en cada intento, incluido el cambio a un proveedor de respaldo. Si no hay ninguna variante adecuada disponible en ese momento, recibes un error explícito structured_output_unsupported en lugar de texto sin formato cuando se solicitó JSON. Esta protección se basa en mediciones y solo cubre las variantes que hemos medido: en una variante no medida, el proveedor aún podría descartar el esquema silenciosamente.
Los modelos difieren en lo bien que mantienen el JSON; comprueba el tuyo. Medido el 2026-09-12 en deepseek-v4-flash-0731, 10 llamadas por celda: json_object analizó correctamente 10/10 en las variantes :cxa y :cxbc, y 8/10 en :network, mientras que un json_schema estricto analizó correctamente 0/10 en ambas variantes (:cxa responde 400, :cxbc responde 200 con texto plano) y 3/10 en :network. La API propia de DeepSeek no tiene un modo json_schema; usa json_object, y cuando necesitas exactamente una estructura, una llamada de función forzada (tools + tool_choice) devolvió argumentos analizables correctamente 10/10 en todas las variantes. Los números por variante se encuentran en el campo structuredOutput de GET /v1/model-capabilities. Cada uno es una medición puntual con su fecha (measurement: "point-in-time"), no una promesa: el proveedor detrás de una variante puede cambiar y no volvemos a medir según un calendario.

Respuesta de ejemplo

{
  "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 }
}
Salidas estructuradas de GetVibe API: JSON Schema, json_object, Python | GetVibe API