from __future__ import annotations import os from pydantic_settings import BaseSettings from pydantic import Field class Settings(BaseSettings): BACKEND_LLM: str = Field(default="llamacpp") # 'llamacpp' | 'openai' | 'groq' LLAMACPP_MODEL_PATH: str = Field(default="models/qwen2.5-1.5b-instruct-q4_k_m.gguf") N_CTX: int = 4096 N_THREADS: int = 4 N_GPU_LAYERS: int = 0 ASR_DEVICE: str = "mps" # 'mps' or 'cpu' TTS_ENGINE: str = "pyttsx3" # 'pyttsx3' | 'say' | 'piper' (later) OPENAI_API_KEY: str | None = None GROQ_API_KEY: str | None = None IS_HF_SPACE: bool = False DEBUG: bool = True class Config: env_file = ".env" extra = "ignore" def pretty(self) -> dict: d = self.model_dump() if d.get("OPENAI_API_KEY"): d["OPENAI_API_KEY"] = True if d.get("GROQ_API_KEY"): d["GROQ_API_KEY"] = True return d _settings: Settings | None = None def get_settings() -> Settings: global _settings if _settings is None: _settings = Settings() return _settings