from dataclasses import dataclass, field import os @dataclass(frozen=True) class Settings: database_url: str = os.getenv( "RAG_DATABASE_URL", "postgresql://courtrix:courtrix@localhost:5432/courtrix?sslmode=disable", ) gemini_api_key: str = os.getenv("GEMINI_API_KEY", "AIzaSyDdD78KJBTOLCwpG3J7lDUnNwNR5vyqbBI") gemini_chat_model: str = os.getenv("GEMINI_CHAT_MODEL", "gemini-2.5-flash") gemini_embedding_model: str = os.getenv( "GEMINI_EMBEDDING_MODEL", "gemini-embedding-001", ) groq_api_key: str = os.getenv("GROQ_API_KEY","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") HUGGINGFACE_API_TOKEN: str = os.getenv("HUGGINGFACE_API_TOKEN","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") minio_endpoint: str = os.getenv("MINIO_ENDPOINT", "localhost") minio_port: int = int(os.getenv("MINIO_PORT", "9000")) minio_use_ssl: bool = os.getenv("MINIO_USE_SSL", "false").lower() == "true" minio_access_key: str = os.getenv("MINIO_ACCESS_KEY", "courtrixminio") minio_secret_key: str = os.getenv("MINIO_SECRET_KEY", "courtrixminiosecret") service_secret: str = os.getenv("RAG_SERVICE_SECRET", "courtrix-rag-secret") default_top_k: int = int(os.getenv("RAG_TOP_K", "5")) chunk_size: int = int(os.getenv("RAG_CHUNK_SIZE", "1200")) chunk_overlap: int = int(os.getenv("RAG_CHUNK_OVERLAP", "200")) # Fallback configuration openrouter_api_key: str = os.getenv("OPENROUTER_API_KEY", "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") xai_api_key: str = os.getenv("XAI_API_KEY", "") google_fallback_models: list[str] = field(default_factory=lambda: [ "gemini-2.5-flash", "gemini-1.5-pro", "gemini-1.5-flash" ]) openrouter_fallback_models: list[str] = field(default_factory=lambda: [ "meta-llama/llama-3.3-70b-instruct:free" ]) xai_fallback_models: list[str] = field(default_factory=lambda: [ "grok-2-1212" ]) settings = Settings()