📋 Cap 12: Structured Outputs e Validação com Pydantic - Exemplos Práticos
Código executável em Python demonstrando como extrair dados de texto não estruturado com validação de esquema rígido via Pydantic.
🗺️ Fluxo de Processamento
flowchart LR
EMAIL["E-mail Desestruturado: 'Olá, sou o Dr. Roberto, CRM 44921-SP, meu telefone é (11) 98888-7777...'"]
--> PARSER["LLM com Schema Pydantic"]
PARSER --> INSTANCE["MedicoLead(nome='Roberto', crm='44921-SP', estado='SP')"]
INSTANCE --> DB[("Gravação Segura no PostgreSQL")]
style EMAIL fill:#ede7f6,stroke:#512da8,stroke-width:2px
style PARSER fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style INSTANCE fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style DB fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
📄 Código de Demonstração (pydantic_structured_demo.py)
from pydantic import BaseModel, Field
import json
class LeadContato(BaseModel):
nome_completo: str
cargo: str
empresa: str
score_interesse: int = Field(..., ge=1, le=10, description="Nota de 1 a 10 calculada pela urgência")
temas_interesse: list[str]
def processar_lead_llm():
# Simulação da resposta JSON devolvida pelo LLM via Structured Outputs
llm_json_output = """
{
"nome_completo": "Mariana Souza",
"cargo": "Head de Infraestrutura Cloud",
"empresa": "Fintech PagSeguro",
"score_interesse": 9,
"temas_interesse": ["Kubernetes", "Observabilidade", "FinOps"]
}
"""
print("=== Validação Estrita de Saídas com Pydantic ===")
dados = json.loads(llm_json_output)
lead = LeadContato(**dados)
print("Objeto validado com tipagem segura:")
print(f" Nome: {lead.nome_completo}")
print(f" Cargo: {lead.cargo} @ {lead.empresa}")
print(f" Score: {lead.score_interesse}/10 (Alta Prioridade)")
print(f" Tópicos: {', '.join(lead.temas_interesse)}")
if __name__ == "__main__":
processar_lead_llm()
🚀 Saída Esperada no Terminal / Execução
=== Validação Estrita de Saídas com Pydantic ===
Objeto validado com tipagem segura:
Nome: Mariana Souza
Cargo: Head de Infraestrutura Cloud @ Fintech PagSeguro
Score: 9/10 (Alta Prioridade)
Tópicos: Kubernetes, Observabilidade, FinOps
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Tópico | Ver Slides | Fazer Quiz | Ver Código | Praticar |