""" Módulo para la configuración de modelos de lenguaje. Este módulo proporciona clases para manejar la configuración de diferentes modelos de lenguaje de manera estructurada. """ from typing import Dict, Any, Optional class LLMConfig: """ Clase para manejar la configuración de los modelos de lenguaje. Esta clase encapsula todos los parámetros necesarios para crear un modelo de lenguaje, facilitando su gestión y reutilización. """ def __init__( self, provider: str, model_name: Optional[str] = None, temperature: float = 0.0, **kwargs ): """ Inicializa una configuración para un modelo de lenguaje. Args: provider: Proveedor del modelo (openai, anthropic) model_name: Nombre del modelo específico (opcional) temperature: Temperatura para la generación (default: 0.0) **kwargs: Parámetros adicionales específicos del modelo """ self.provider = provider self.model_name = model_name self.temperature = temperature self.extra_params = kwargs def as_dict(self) -> Dict[str, Any]: """ Convierte la configuración a un diccionario. Returns: Diccionario con todos los parámetros de configuración """ config = { "temperature": self.temperature, } # Añadir el nombre del modelo si está definido if self.model_name: config["model_name"] = self.model_name # Añadir parámetros adicionales config.update(self.extra_params) return config @classmethod def default_openai(cls) -> 'LLMConfig': """ Crea una configuración predeterminada para OpenAI. Returns: Configuración predeterminada para OpenAI """ return cls(provider="openai", model_name="o4-mini") @classmethod def default_anthropic(cls) -> 'LLMConfig': """ Crea una configuración predeterminada para Anthropic. Returns: Configuración predeterminada para Anthropic """ return cls(provider="anthropic", model_name="claude-3-5-haiku-20241022")