Carregando
0x50Lição 6 de 9

Peça saídas estruturadas e utilizáveis

Defina um contrato de saída, use saídas restritas por schema quando disponíveis e faça o parse e a validação de tudo.

20 min Questionário com 6 perguntas 2 exercícios de código
Ao final desta lição, você saberá
  • Projetar um contrato de saída com tipos, enums e null para o desconhecido
  • Extrair JSON de uma resposta de forma robusta
  • Validar os valores, não só o formato

Quando um código consome a saída de um modelo, escreva um contrato de saída: os campos, os tipos, os valores permitidos (enums) e o que devolver quando algo é desconhecido (null, nunca um chute).

  • A maioria das APIs agora oferece saídas estruturadas (structured outputs): você passa um JSON Schema e a geração é restrita para corresponder a ele - a opção mais confiável para o formato.
  • Caso contrário, peça JSON (ou tags XML), mostre um exemplo e diga “responda só com o JSON”.
  • De qualquer forma, faça o parse e valide no código: a estrutura pode estar certa com os valores errados (uma data inventada, uma categoria fora do seu enum).
  • Em caso de falha, tente de novo com o erro específico (“priority precisa ser low, medium ou high”) ou siga para uma alternativa.

Experimente

Até 15 XP

Esta resposta passaria?

O contrato é {"category": "billing" | "bug" | "feature", "priority": "low" | "medium" | "high", "due_date": "YYYY-MM-DD" ou null}. Classifique cada resposta.

0 de 5 classificadosPontuação 0/0
  • “{"category": "bug", "priority": "high", "due_date": null}”

  • “{"category": "Bug", "priority": "high", "due_date": null}”

  • “{"category": "billing", "priority": "urgent", "due_date": "2026-11-01"}”

  • “Claro! Aqui está o JSON: {"category": "feature", "priority": "low", "due_date": null}”

  • “{"category": "billing", "priority": "medium", "due_date": "sexta que vem"}”

parse.py
1import json
2reply = '{"category": "bug", "priority": "high", "due_date": null}'
3ticket = json.loads(reply)
4print(ticket["priority"] in {"low", "medium", "high"}, ticket["due_date"])
Saída
True None

Principais conclusões

  • Defina campos, tipos, enums e null para o desconhecido.

  • Prefira saídas estruturadas restritas por schema; caso contrário, extraia com cuidado.

  • Valide os valores além do formato, e tente de novo com o erro específico.

Quiz da aula

6 perguntas · aprovação com 5 acertos · até 50 XP

Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.

Pratique: escreva código em Python

Escreva código Python no editor e execute os testes com exemplos. O Python roda localmente no navegador usando WebAssembly.

Exercício 1

Extraia o JSON de uma resposta

+25 XP

As respostas são separadas por linhas que contêm só ===. Para cada uma, pegue o texto do primeiro { até o último } e faça o parse. Imprima-o com json.dumps(data, sort_keys=True), ou error: no JSON found, ou error: invalid JSON.

  • Quatro respostas
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Exercício 2

Valide um contrato de saída

+25 XP

Cada linha é um objeto JSON. Confira se category ∈ {billing, bug, feature}, priority ∈ {low, medium, high} e se due_date é null ou uma string YYYY-MM-DD. Imprima valid ou invalid: e todos os problemas, separados por vírgula, nessa ordem de campos (missing FIELD ou bad FIELD).

  • Quatro chamados
main.py
Carregando editor…

O Python é executado em um ambiente isolado no navegador, com limite de 60 segundos. O runtime é carregado pelo CDN do Pyodide; seu código permanece neste navegador.

Dúvidas sobre esta lição

Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.

Carregando publicações…