from pydantic import BaseModel, Field from typing import Optional class Accion(BaseModel): accion: str = Field(..., description="Texto de la accion extraida de la respuesta.") class Acciones(BaseModel): acciones: list[Accion] = Field( ..., description="Lista de acciones extraidas de la respuesta." ) class Tema(BaseModel): tema: str = Field(..., description="Texto del tema extraido de la respuesta.") class Temas(BaseModel): temas: list[Tema] = Field( ..., description="Lista de temas extraidos de la respuesta." ) class Estrategia(BaseModel): estrategia: str = Field( ..., description="Texto de la estrategia extraida de la respuesta." ) class Estrategias(BaseModel): estrategias: list[Estrategia] = Field( ..., description="Lista de estrategias extraidas de la respuesta." ) class Factor(BaseModel): factor: str = Field(..., description="Texto del factor extraido de la respuesta.") class Factores(BaseModel): factores: list[Factor] = Field( ..., description="Lista de factores extraidos de la respuesta." ) class Entidad(BaseModel): entidad: str = Field( ..., description="Texto del programa, alianza o convenio extraido de la respuesta.", ) class Entidades(BaseModel): entidades: list[Entidad] = Field( ..., description="Lista de entidades ( programa, alianza o convenio) extraidas de la respuesta.", ) class Competencias(BaseModel): basicas: Optional[list[str]] = Field( default_factory=list, description="Lista de competencias básicas" ) socioemocionales: Optional[list[str]] = Field( default_factory=list, description="Lista de competencias socioemocionales" ) ciudadanas: Optional[list[str]] = Field( default_factory=list, description="Lista de competencias ciudadanas" ) siglo_xxi: Optional[list[str]] = Field( default_factory=list, description="Lista de competencias siglo_xxi" ) class Herramienta(BaseModel): herramienta: str = Field( ..., description="Texto de la herramienta extraida de la respuesta.", ) class Herramientas(BaseModel): herramientas: list[Herramienta] = Field( ..., description="Lista de herramientas extraidas de la respuesta.", ) class Mecanismo(BaseModel): mecanismo: str = Field( ..., description="Texto del mecanismo extraido de la respuesta.", ) class Mecanismos(BaseModel): mecanismos: list[Mecanismo] = Field( ..., description="Lista de mecanismos extraidas de la respuesta.", ) class Opinion(BaseModel): opinion: str = Field( ..., description="Texto de la opinión extraida de la respuesta.", ) class Opiniones(BaseModel): opiniones: list[Opinion] = Field( ..., description="Lista de opiniones extraidas de la respuesta.", ) class Expectativa(BaseModel): expectativa: str = Field( ..., description="Texto de la expectativa extraida de la respuesta.", ) class Expectativas(BaseModel): expectativas: list[Expectativa] = Field( ..., description="Lista de expectativas extraidas de la respuesta.", )