Gerando saídas estruturadas

Trabalhando com a OpenAI Responses API

James Chapman

AI Curriculum Manager, DataCamp

A seguir...

Visão geral do cap. 3

Trabalhando com a OpenAI Responses API

A necessidade de estrutura

App de idiomas 1

Trabalhando com a OpenAI Responses API

A necessidade de estrutura

App de idiomas 2

Trabalhando com a OpenAI Responses API

A necessidade de estrutura

App de idiomas 3

Trabalhando com a OpenAI Responses API

Parte 1: Definindo o esquema de saída

from pydantic import BaseModel


class QuizResult(BaseModel): score: int passed: bool feedback: str
Trabalhando com a OpenAI Responses API

Parte 1: Definindo o esquema de saída

from pydantic import BaseModel, Field

class QuizResult(BaseModel):
    score: int = Field(description="Número de acertos de 10")
    passed: bool = Field(description="Verdadeiro se a nota for 7 ou mais")
    feedback: str = Field(
        description="Mensagem motivadora com dicas específicas de melhoria"
    )
Trabalhando com a OpenAI Responses API

Parte 2: Enviando a solicitação

response = client.responses.parse(

model="gpt-5-mini",
instructions="Você é um tutor de vocabulário em espanhol. Corrija as respostas do aluno. Dê 2 pontos por resposta correta.", input="""1. casa = house 2. perro = dog 3. gato = car 4. libro = book 5. agua = water""",
text_format=QuizResult
)
Trabalhando com a OpenAI Responses API

Parte 3: Extraindo os resultados

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: Mandou bem — você fez 8/10 (4/5 corretas). O único erro foi #3: 'gato'
significa 'cat', não 'car' (em espanhol, 'car' é 'coche' ou 'carro'). Dica: revise
vocabulário de animais com flashcards e quizzes curtos para fixar melhor.
Trabalhando com a OpenAI Responses API

Estruturas de dados mais complexas

class Mistake(BaseModel):
    word: str = Field(description="A palavra em espanhol que estava errada")
    student_answer: str = Field(description="O que o aluno escreveu")
    correct_answer: str = Field(description="A tradução correta")

class DetailedQuizResult(BaseModel): score: int = Field(description="Número de acertos de 10") passed: bool = Field(description="Verdadeiro se a nota for 7 ou mais") feedback: str = Field(description="Mensagem motivadora com dicas específicas")
mistakes: list[Mistake] = Field(description="Lista de respostas incorretas")
Trabalhando com a OpenAI Responses API
response = client.responses.parse(
    model="gpt-5-mini",
    instructions="Você é um tutor de vocabulário em espanhol. Corrija as respostas do aluno. Dê 2 pontos por resposta correta.",
    input="""1. casa = house
             2. perro = dog
             3. gato = car
             4. libro = library
             5. agua = water""",

text_format=DetailedQuizResult
)
Trabalhando com a OpenAI Responses API
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'
Trabalhando com a OpenAI Responses API

Resumo

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-mini",
    instructions="...",
    input="...",

text_format=QuizResult
)
Trabalhando com a OpenAI Responses API

Vamos praticar!

Trabalhando com a OpenAI Responses API

Preparing Video For Download...