Instructor / Outlines pour une structure garantie
Instructor (Python) et Outlines contraignent le décodage afin que le modèle ne puisse littéralement pas produire de JSON invalide.
Instructor / Outlines pour une structure garantie est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Deux bibliothèques majeures
Deux approches de référence pour garantir des sorties structurées :
- Instructor (Jason Liu) — enveloppe Pydantic autour d’OpenAI, d’Anthropic et de nombreux fournisseurs
- Outlines (.txt) — décodage contraint pour les modèles OSS
Instructor Basics
# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
user = client.chat.completions.create(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)La magie d’Instructor
En coulisses, Instructor :
- Génère un schéma JSON à partir de votre modèle Pydantic
- L’ajoute comme outil à l’appel OpenAI
- Force l’appel de cet outil
- Analyse les arguments et renvoie une instance Pydantic
- Effectue une nouvelle tentative avec correction en cas d’erreurs de validation
Instructor with Validation
from pydantic import field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
@classmethod
def positive(cls, v):
if v <= 0:
raise ValueError('Age must be positive')
return v
# Instructor catches ValidationError and retries automaticallyStreaming Instructor
for partial in client.chat.completions.create_partial(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
print(partial)
# Streams partial Pydantic instances as fields fill in.Instructor with Anthropic
from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())
user = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)Outlines pour les modèles OSS
Outlines utilise le décodage contraint par une grammaire. Il fonctionne avec HuggingFace, vLLM et llama.cpp :
# pip install outlines
import outlines
model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')
generator = outlines.generate.json(model, User)
user = generator('Alice, 30')Pourquoi le décodage contraint ?
Outlines détermine quels jetons sont légaux à chaque étape selon le schéma, puis masque les jetons illégaux. Le modèle ne peut littéralement pas produire de JSON invalide.
Expression régulière ou choix avec Outlines
Vous pouvez contraindre la sortie à une expression régulière ou à une liste de choix :
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'Combiner les deux
Pour une fiabilité maximale :
- Utilisez Instructor pour les modèles gérés ou fermés (OpenAI, Anthropic)
- Utilisez Outlines pour les modèles auto-hébergés
- Les modèles Pydantic sont partagés entre les deux
Comparaison des coûts
- Sorties strictes (OpenAI natif) — incluses dans le prix
- Instructor — légère surcharge due aux nouvelles tentatives après validation
- Outlines — légère baisse du débit due au masquage, mais aucun appel supplémentaire
Quand utiliser quelle solution
| Cas d’utilisation | Outil |
|---|---|
| OpenAI/Anthropic | Instructor + Pydantic |
| OSS auto-hébergé | Outlines |
| Chemins critiques pour la latence | Sorties structurées OpenAI (natives) |
Approche d’Outlines
Comment Outlines garantit-il une sortie structurée ?
Récapitulatif
Pour OpenAI et Anthropic, utilisez les sorties structurées natives ou Instructor. Pour OSS, utilisez Outlines. Les modèles Pydantic relient l’ensemble.
Questions Fréquemment Posées
La leçon « Instructor / Outlines pour une structure garantie » est-elle gratuite ?
Oui — le texte complet de « Instructor / Outlines pour une structure garantie » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Instructor / Outlines pour une structure garantie » ?
Instructor (Python) et Outlines contraignent le décodage afin que le modèle ne puisse littéralement pas produire de JSON invalide. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Instructor / Outlines pour une structure garantie » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Mode JSON et sorties d’appels d’outils
- Validation de schéma avec Pydantic
- Boucles de correction des sorties malformées
- Instructor / Outlines pour une structure garantie