Thème
Langue

Sorties structurées

Forcez la sortie JSON avec response_format. Deux modes : json_object (tout JSON valide) et json_schema (conformité stricte au schéma). Exemples en curl et en Python.

Le paramètre response_format force le modèle à renvoyer un JSON valide. Deux modes sont pris en charge.

json_object mode

Le modèle garantit que la sortie est un JSON valide. Vous définissez la structure dans le prompt système.

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

Conformité stricte au JSON Schema — le modèle renseigne exactement les champs spécifiés. Pris en charge par GPT-5.x et les modèles 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"}
    ]
  }'
Avec strict: true, la passerelle achemine la requête uniquement vers les variantes de modèle qui respectent effectivement le schéma, et ce à chaque tentative, y compris lors d’un basculement vers un fournisseur de secours. Si aucune variante appropriée n’est disponible pour le moment, vous obtenez une erreur structured_output_unsupported explicite plutôt que du texte brut alors que du JSON était demandé. Cette protection repose sur des mesures et ne couvre que les variantes que nous avons mesurées : sur une variante non mesurée, le fournisseur peut toujours ignorer silencieusement le schéma.
Les modèles diffèrent quant à leur capacité à conserver le format JSON — vérifiez le vôtre. Mesuré le 2026-09-12 sur deepseek-v4-flash-0731, 10 appels par cellule : json_object a été analysé avec succès 10/10 fois sur les variantes :cxa et :cxbc, et 8/10 fois sur :network, tandis qu’un json_schema strict a été analysé avec succès 0/10 fois sur les deux variantes (:cxa renvoie 400, :cxbc renvoie 200 avec du texte brut) et 3/10 fois sur :network. L’API de DeepSeek ne propose aucun mode json_schema : utilisez json_object ; lorsque vous avez besoin d’une forme exactement unique, un appel de fonction forcé (tools + tool_choice) a renvoyé des arguments analysables 10/10 fois sur chaque variante. Les chiffres par variante se trouvent dans le champ structuredOutput de GET /v1/model-capabilities. Chaque valeur est une mesure ponctuelle datée (measurement: "point-in-time"), et non une garantie : le fournisseur à l’origine d’une variante peut changer, et nous ne procédons pas à de nouvelles mesures selon un calendrier fixe.

Exemple de réponse

{
  "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 }
}
Sorties structurées de GetVibe API — JSON Schema, json_object, Python | GetVibe API