Gestructureerde output genereren

Werken met de OpenAI Responses API

James Chapman

AI Curriculum Manager, DataCamp

Wat komt er aan...

ch3_overview.jpg

Werken met de OpenAI Responses API

De noodzaak van structuur

language_app1.jpg

Werken met de OpenAI Responses API

De noodzaak van structuur

language_app2.jpg

Werken met de OpenAI Responses API

De noodzaak van structuur

language_app3.jpg

Werken met de OpenAI Responses API

Deel 1: Het outputschema definiëren

from pydantic import BaseModel


class QuizResult(BaseModel): score: int passed: bool feedback: str
Werken met de OpenAI Responses API

Deel 1: Het outputschema definiëren

from pydantic import BaseModel, Field

class QuizResult(BaseModel):
    score: int = Field(description="Aantal goede antwoorden van de 10")
    passed: bool = Field(description="Waar als score 7 of hoger is")
    feedback: str = Field(
        description="Bemoedigend bericht met concrete verbetertips"
    )
Werken met de OpenAI Responses API

Deel 2: Het verzoek versturen

response = client.responses.parse(

model="gpt-5-mini",
instructions="Je bent een Spaanse woordenschat-tutor. Beoordeel de antwoorden van de student. Geef 2 punten per goed antwoord.", input="""1. casa = house 2. perro = dog 3. gato = car 4. libro = book 5. agua = water""",
text_format=QuizResult
)
Werken met de OpenAI Responses API

Deel 3: De resultaten ophalen

result = response.output_parsed

print(f"Score: {result.score}/10") print(f"Geslaagd: {result.passed}") print(f"Feedback: {result.feedback}")
Score: 8/10
Geslaagd: True
Feedback: Goed gedaan - je scoorde 8/10 (4/5 goed). De enige fout was #3: 'gato'
betekent 'cat', niet 'car' (Spaans voor 'car' is 'coche' of 'carro'). Tip: herhaal veelvoorkomende
dierwoorden met flashcards en korte quizzen om het geheugen te versterken.
Werken met de OpenAI Responses API

Complexere datastructuren

class Mistake(BaseModel):
    word: str = Field(description="Het Spaanse woord dat fout was")
    student_answer: str = Field(description="Wat de student invulde")
    correct_answer: str = Field(description="De juiste vertaling")

class DetailedQuizResult(BaseModel): score: int = Field(description="Aantal goede antwoorden van de 10") passed: bool = Field(description="Waar als score 7 of hoger is") feedback: str = Field(description="Bemoedigend bericht met specifieke tips")
mistakes: list[Mistake] = Field(description="Lijst met foute antwoorden")
Werken met de OpenAI Responses API
response = client.responses.parse(
    model="gpt-5-mini",
    instructions="Je bent een Spaanse woordenschat-tutor. Beoordeel de antwoorden van de student. Geef 2 punten per goed antwoord.",
    input="""1. casa = house
             2. perro = dog
             3. gato = car
             4. libro = library
             5. agua = water""",

text_format=DetailedQuizResult
)
Werken met de OpenAI Responses API
result = response.output_parsed
print(f"Score: {result.score}/10")
print(f"Geslaagd: {result.passed}")

for mistake in result.mistakes: print(f"{mistake.word}: '{mistake.student_answer}' -> '{mistake.correct_answer}'")
Score: 6/10
Geslaagd: False
gato: 'car' -> 'cat'
libro: 'library' -> 'book'
Werken met de OpenAI Responses API

Samenvatting

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"Geslaagd: {result.passed}")
print(f"Feedback: {result.feedback}")
response = client.responses.parse(
    model="gpt-5-mini",
    instructions="...",
    input="...",

text_format=QuizResult
)
Werken met de OpenAI Responses API

Laten we oefenen!

Werken met de OpenAI Responses API

Preparing Video For Download...