class LlmConfig: class openai: class models: gpt_4o = "gpt-4o" gpt_4_1 = "gpt-4.1" temperatures = { "default": 0.7, "drone_bot": 0.3, "creative": 0.9 } max_tokens = { "default": 2048, "summary_bot": 512, "explainer": 1024 } class anthropic: class models: claude_3_opus = "claude-3-opus" claude_3_sonnet = "claude-3-sonnet" temperatures = { "default": 0.5, "drone_bot": 0.4, "research": 0.2 } max_tokens = { "default": 4096, "summary_bot": 1024 } @classmethod def get_config(cls, provider: str, model_name: str, temp_name: str = "default", token_preset: str = "default") -> dict: if not hasattr(cls, provider): raise ValueError(f"Provider '{provider}' not found.") provider_cls = getattr(cls, provider) # Get model value from class (e.g., LlmConfig.openai.models.gpt_4o) model_cls = getattr(provider_cls, "models") if not hasattr(model_cls, model_name): raise ValueError(f"Model '{model_name}' not found under provider '{provider}'.") model = getattr(model_cls, model_name) if temp_name not in provider_cls.temperatures: raise ValueError(f"Temperature preset '{temp_name}' not found under provider '{provider}'.") if token_preset not in provider_cls.max_tokens: raise ValueError(f"Max token preset '{token_preset}' not found under provider '{provider}'.") return { "provider": provider, "model": model, "temperature": provider_cls.temperatures[temp_name], "max_tokens": provider_cls.max_tokens[token_preset] }