Ir al contenido

Type Hints & Pydantic

Objetivo: Validación de datos robusta con type hints y Pydantic v2.

Nominal (Inheritance):

from abc import ABC, abstractmethod
class LLMProvider(ABC):
@abstractmethod
def generate(self, prompt: str) -> str:
pass
class OpenAIProvider(LLMProvider):
def generate(self, prompt: str) -> str:
return "response"

Structural (Protocol):

from typing import Protocol
class LLMProvider(Protocol):
def generate(self, prompt: str) -> str: ...
# No necesita herencia!
class OpenAIProvider:
def generate(self, prompt: str) -> str:
return "response"
from pydantic import BaseModel, Field, SecretStr, model_validator
class Config(BaseModel):
env: str = Field(..., pattern="^(dev|staging|prod)$")
debug: bool = True
openai_key: SecretStr
@model_validator(mode='after')
def check_prod_no_debug(self):
if self.env == "prod" and self.debug:
raise ValueError("DEBUG must be False in prod")
return self

“En un sistema distribuido, ¿cómo garantizas que el JSON del Agente A cumple el contrato del Agente B sin compartir código?”

Respuesta: Pydantic schemas publicados como OpenAPI/JSON Schema + validation en el edge.

🧪 Lab Práctico: “The Secure Config Manager”

Sección titulada «🧪 Lab Práctico: “The Secure Config Manager”»

Ver contenido completo en COURSE.md línea 166-172.

1.3 Memory Management