> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bettertoken.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Comment valider du JSON structuré avec Pydantic ?

> Validez avec Pydantic le JSON renvoyé par un LLM, conservez la réponse brute et gérez explicitement réparation et nouvelles tentatives.

## Réponse courte

Traitez la sortie du modèle comme un texte non fiable. Demandez du JSON, conservez la réponse brute, analysez-la localement et validez l'objet avec Pydantic. En cas d'échec, renvoyez une erreur explicite ou effectuez une seule tentative de réparation limitée.

Cette méthode ne nécessite pas de paramètre de sortie structurée propre à un fournisseur. Elle ne garantit pas non plus un JSON valide dès la première réponse.

## Exemple Python

Installez OpenAI SDK et Pydantic, puis utilisez l'API OpenAI-compatible Chat Completions :

```python theme={null}
import json
import os

from openai import OpenAI
from pydantic import BaseModel, ValidationError


class Ticket(BaseModel):
    category: str
    summary: str


client = OpenAI(
    api_key=os.environ["BETTERTOKEN_API_KEY"],
    base_url="https://bettertoken.ai/v1",
)

response = client.chat.completions.create(
    model="YOUR_MODEL_ID",
    messages=[
        {
            "role": "user",
            "content": (
                "Return only a JSON object with string fields "
                "category and summary for this support request: "
                "The API request timed out."
            ),
        }
    ],
)

raw = response.choices[0].message.content or ""

try:
    payload = json.loads(raw)
    ticket = Ticket.model_validate(payload)
except (json.JSONDecodeError, ValidationError) as error:
    # Store raw only in a protected debug record allowed by your data policy.
    raise RuntimeError("Model output failed validation") from error

print(ticket.model_dump())
```

Copiez le Model ID complet depuis la <a href={"https://bettertoken.ai/pricing"}>place des modèles</a>. Conservez la BetterToken API Key dans une variable d'environnement, pas dans le code source.

## Flux de validation

1. Définissez le plus petit schema nécessaire à l'application.
2. Demandez du JSON sans ajouter de champs absents du schema.
3. Conservez la réponse brute dans un emplacement protégé si votre politique de données l'autorise.
4. Analysez avec `json.loads`.
5. Validez avec `model_validate`.
6. Renvoyez un échec explicite ou effectuez une tentative de réparation limitée.

Ne complétez pas silencieusement les valeurs absentes, n'inventez pas de defaults et ne réessayez pas indéfiniment. L'objet réparé doit passer le même schema.

## Vérifications en cas d'échec

| Échec                  | Vérification                                                           |
| ---------------------- | ---------------------------------------------------------------------- |
| Erreur de syntaxe JSON | Texte supplémentaire, Markdown fences, troncature ou sortie incomplète |
| Champ absent           | Prompt et schema utilisent les mêmes noms                              |
| Type incorrect         | Le schema correspond au contrat réel de l'application                  |
| Échec répété           | Arrêtez les tentatives et renvoyez une erreur typée                    |

Pydantic valide l'objet côté client. Il ne prouve pas que les valeurs factuelles sont correctes. Ajoutez des contrôles métier pour les ID, autorisations, totaux et autres règles du domaine.

## Limite de capacité

Le contrat publié de BetterToken Chat Completions documente la requête OpenAI-compatible et la réponse texte. Les champs de sortie structurée spécifiques varient selon le modèle et la route. N'envoyez aucun champ non documenté sans prise en charge explicite dans la référence actuelle.

## Documents associés

* [OpenAI Chat Completions API](/fr/api-reference/chat-completions)
* [Comment choisir le bon modèle d'IA ?](/fr/faq/model-calling/model-selection-guide)
* [Modèles Pydantic](https://docs.pydantic.dev/latest/concepts/models/)
