Uma Implementação de Código para Construir Workflows Agente à Prova de Falhas com PydanticAI Usando…

Neste tutorial, construímos um workflow agente pronto para produção que prioriza a confiabilidade em detrimento da geração de melhor esforço, impondo saídas tipadas e estritas em cada etapa. Usamos PydanticAI para definir schemas de resposta claros, conectar ferramentas via injeção de dependência e garantir que o agente possa interagir com segurança com sistemas externos, como um banco de dados, sem interromper a execução. Ao executar tudo em uma configuração assíncrona, amigável para notebooks, demonstramos como ir além de padrões frágeis de chatbots para sistemas agentes robustos adequados para workflows empresariais reais. Copiar Código Copiado Usar um navegador diferente !pip -q install "pydantic-ai-slim[openai]" pydantic import os, json, sqlite3 from dataclasses import dataclass from datetime import datetime, timezone from typing import Literal, Optional, List from pydantic import BaseModel, Field, field_validator from pydantic_ai import Agent, RunContext, ModelRetry if not os.environ.get("OPENAI_API_KEY"): try: from google.colab import userdata os.environ["OPENAI_API_KEY"] = (userdata.get("OPENAI_API_KEY") or "").strip() except Exception: pass if not os.environ.get("OPENAI_API_KEY"): import getpass os.environ["OPENAI_API_KEY"] = getpass.getpass("Cole sua OPENAI_API_KEY: ").strip() assert os.environ.get("OPENAI_API_KEY"), "OPENAI_API_KEY é necessária." Configuramos o ambiente de execução e garantimos que todas as bibliotecas necessárias estejam disponíveis para que o agente funcione corretamente. Carregamos com segurança a chave da API OpenAI de uma forma amigável ao Colab para que o tutorial funcione sem alterações manuais de configuração. Também importamos todas as dependências principais que serão compartilhadas entre schemas, ferramentas e lógica do agente. Copiar Código Copiado Usar um navegador diferente Priority = Literal["low", "medium", "high", "critical"] ActionType = Literal["create_ticket", "update_ticket", "query_ticket", "list_open_tickets", "no_action"] Confidence = Literal["low", "medium", "high"] class TicketDraft(BaseModel): title: str = Field(..., min_length=8, max_length=120) customer: str = Field(..., min_length=2, max_length=60) priority: Priority category: Literal["billing", "bug", "feature_request", "security", "account", "other"] description: str = Field(..., min_length=20, max_length=1000) expected_outcome: str = Field(..., min_length=10, max_length=250) class AgentDecision(BaseModel): action: ActionType reason: str = Field(..., min_length=20, max_length=400) confidence: Confidence ticket: Optional[TicketDraft] = None ticket_id: Optio

Fonte: MarkTechPost

Publicado em 2026-02-19

Notícias relacionadas

Continue explorando