Générer des sorties structurées

Travailler avec l’API OpenAI Responses

James Chapman

AI Curriculum Manager, DataCamp

À suivre…

Aperçu du chapitre 3

Travailler avec l’API OpenAI Responses

Le besoin de structure

Appli de langue 1

Travailler avec l’API OpenAI Responses

Le besoin de structure

Appli de langue 2

Travailler avec l’API OpenAI Responses

Le besoin de structure

Appli de langue 3

Travailler avec l’API OpenAI Responses

Partie 1 : définir le schéma de sortie

from pydantic import BaseModel


class QuizResult(BaseModel): score: int passed: bool feedback: str
Travailler avec l’API OpenAI Responses

Partie 1 : définir le schéma de sortie

from pydantic import BaseModel, Field

class QuizResult(BaseModel):
    score: int = Field(description="Nombre de réponses correctes sur 10")
    passed: bool = Field(description="Vrai si le score est ≥ 7")
    feedback: str = Field(
        description="Message d'encouragement avec des conseils précis d'amélioration"
    )
Travailler avec l’API OpenAI Responses

Partie 2 : envoyer la requête

response = client.responses.parse(

model="gpt-5-mini",
instructions="Vous êtes un·e tuteur·rice de vocabulaire espagnol. Notez les réponses de l'élève. Attribuez 2 points par bonne réponse.", input="""1. casa = house 2. perro = dog 3. gato = car 4. libro = book 5. agua = water""",
text_format=QuizResult
)
Travailler avec l’API OpenAI Responses

Partie 3 : extraire les résultats

result = response.output_parsed

print(f"Score: {result.score}/10") print(f"Réussi : {result.passed}") print(f"Retour : {result.feedback}")
Score: 8/10
Réussi : True
Retour : Bravo — vous avez obtenu 8/10 (4/5 correct). La seule erreur était la n°3 : « gato »
signifie « cat », pas « car » (en espagnol, « car » = « coche » ou « carro »). Astuce : révisez le
vocabulaire des animaux avec des flashcards et de courts quiz pour ancrer le rappel.
Travailler avec l’API OpenAI Responses

Structures de données plus complexes

class Mistake(BaseModel):
    word: str = Field(description="Le mot espagnol incorrect")
    student_answer: str = Field(description="Réponse de l'élève")
    correct_answer: str = Field(description="Traduction correcte")

class DetailedQuizResult(BaseModel): score: int = Field(description="Nombre de réponses correctes sur 10") passed: bool = Field(description="Vrai si le score est ≥ 7") feedback: str = Field(description="Message d'encouragement avec conseils précis")
mistakes: list[Mistake] = Field(description="Liste des réponses incorrectes")
Travailler avec l’API OpenAI Responses
response = client.responses.parse(
    model="gpt-5-mini",
    instructions="Vous êtes un·e tuteur·rice de vocabulaire espagnol. Notez les réponses de l'élève. Attribuez 2 points par bonne réponse.",
    input="""1. casa = house
             2. perro = dog
             3. gato = car
             4. libro = library
             5. agua = water""",

text_format=DetailedQuizResult
)
Travailler avec l’API OpenAI Responses
result = response.output_parsed
print(f"Score: {result.score}/10")
print(f"Réussi : {result.passed}")

for mistake in result.mistakes: print(f"{mistake.word}: '{mistake.student_answer}' -> '{mistake.correct_answer}'")
Score: 6/10
Réussi : False
gato: 'car' -> 'cat'
libro: 'library' -> 'book'
Travailler avec l’API OpenAI Responses

Récapitulatif

from pydantic import BaseModel, Field

class QuizResult(BaseModel):
    score: int = Field(...)
    passed: bool = Field(...)
    feedback: str = Field(...)
result = response.output_parsed

print(f"Score: {result.score}/10")
print(f"Réussi : {result.passed}")
print(f"Retour : {result.feedback}")
response = client.responses.parse(
    model="gpt-5-mini",
    instructions="...",
    input="...",

text_format=QuizResult
)
Travailler avec l’API OpenAI Responses

Passons à la pratique !

Travailler avec l’API OpenAI Responses

Preparing Video For Download...