Generare output strutturati

Lavorare con la Responses API di OpenAI

James Chapman

AI Curriculum Manager, DataCamp

In arrivo...

Panoramica cap. 3

Lavorare con la Responses API di OpenAI

Serve struttura

app di lingue 1

Lavorare con la Responses API di OpenAI

Serve struttura

app di lingue 2

Lavorare con la Responses API di OpenAI

Serve struttura

app di lingue 3

Lavorare con la Responses API di OpenAI

Parte 1: definire lo schema di output

from pydantic import BaseModel


class QuizResult(BaseModel): score: int passed: bool feedback: str
Lavorare con la Responses API di OpenAI

Parte 1: definire lo schema di output

from pydantic import BaseModel, Field

class QuizResult(BaseModel):
    score: int = Field(description="Numero di risposte corrette su 10")
    passed: bool = Field(description="True se il punteggio è 7 o più")
    feedback: str = Field(
        description="Messaggio incoraggiante con consigli specifici per migliorare"
    )
Lavorare con la Responses API di OpenAI

Parte 2: inviare la richiesta

response = client.responses.parse(

model="gpt-5.4-mini",
instructions="Sei un tutor di vocabolario spagnolo. Valuta le risposte del quiz. Assegna 2 punti per ogni risposta corretta.", input="""1. casa = house 2. perro = dog 3. gato = car 4. libro = book 5. agua = water""",
text_format=QuizResult
)
Lavorare con la Responses API di OpenAI

Parte 3: estrarre i risultati

result = response.output_parsed

print(f"Score: {result.score}/10") print(f"Passed: {result.passed}") print(f"Feedback: {result.feedback}")
Score: 8/10
Passed: True
Feedback: Ottimo lavoro: hai totalizzato 8/10 (4/5 corrette). L'unico errore era la #3: 'gato'
significa 'cat', non 'car' (in spagnolo 'car' è 'coche' o 'carro'). Suggerimento: ripassa il
vocabolario degli animali con flashcard e mini‑quiz per rinforzare il richiamo.
Lavorare con la Responses API di OpenAI

Strutture dati più complesse

class Mistake(BaseModel):
    word: str = Field(description="La parola spagnola errata")
    student_answer: str = Field(description="Cosa ha scritto lo studente")
    correct_answer: str = Field(description="La traduzione corretta")

class DetailedQuizResult(BaseModel): score: int = Field(description="Numero di risposte corrette su 10") passed: bool = Field(description="True se il punteggio è 7 o più") feedback: str = Field(description="Messaggio incoraggiante con consigli specifici")
mistakes: list[Mistake] = Field(description="Elenco delle risposte errate")
Lavorare con la Responses API di OpenAI
response = client.responses.parse(
    model="gpt-5.4-mini",
    instructions="Sei un tutor di vocabolario spagnolo. Valuta le risposte del quiz.
    Assegna 2 punti per ogni risposta corretta.",
    input="""1. casa = house
             2. perro = dog
             3. gato = car
             4. libro = library
             5. agua = water""",

text_format=DetailedQuizResult
)
Lavorare con la Responses API di OpenAI
result = response.output_parsed
print(f"Score: {result.score}/10")
print(f"Passed: {result.passed}")

for mistake in result.mistakes: print(f"{mistake.word}: '{mistake.student_answer}' -> '{mistake.correct_answer}'")
Score: 6/10
Passed: False
gato: 'car' -> 'cat'
libro: 'library' -> 'book'
Lavorare con la Responses API di OpenAI

Riepilogo

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

text_format=QuizResult
)
Lavorare con la Responses API di OpenAI

Ayo berlatih!

Lavorare con la Responses API di OpenAI

Preparing Video For Download...