Spaces:
Running
Running
Refactor LLM architecture to SOLID principles, add Gemini Judge, and self-reflective RAGAS logic
9748ae9 | from pydantic_settings import BaseSettings | |
| from typing import Optional | |
| class Settings(BaseSettings): | |
| # Supabase | |
| SUPABASE_URL: str | |
| SUPABASE_KEY: str | |
| SUPABASE_DB_URL: str | |
| # Embeddings (bge-m3) | |
| EMBED_API_URL: str = "https://lamhieu-lightweight-embeddings.hf.space/" | |
| EMBED_MODEL: str = "bge-m3" | |
| EMBED_DIM: int = 1024 | |
| EMBED_AUTH_KEY: str = "" | |
| EMBED_MAX_TOKENS: int = 1000 | |
| EMBED_TIMEOUT: int = 60 | |
| EMBED_MAX_RETRIES: int = 3 | |
| # LLM β Tencent Hy3, Gemini & Qwen Omni | |
| GEMINI_API_KEY: str = "" | |
| GEMINI_MODEL_NAME: str = "gemini-3.1-flash-lite" | |
| LLM_RESPONSE_TIMEOUT: int = 1080 | |
| MAX_LLM_RETRIES: int = 3 | |
| MAX_TIMEOUT_RETRIES: int = 10 | |
| # OCR β Mistral | |
| MISTRAL_OCR_SPACE: str = "tatendachirume/Mistral-OCR" | |
| MISTRAL_API_KEY: str = "" | |
| # Image β Qwen-VL Vision | |
| VISION_SPACE_URL: str = "Qwen/Qwen3-VL-30B-A3B-Demo" | |
| # Redis | |
| REDIS_URL: str = "" | |
| CACHE_TTL_SECONDS: int = 3600 | |
| # Auth | |
| JWT_SECRET_KEY: str | |
| JWT_ALGORITHM: str = "HS256" | |
| JWT_EXPIRE_MINUTES: int = 1440 | |
| # Re-ranking | |
| RERANK_MODEL: str = "cross-encoder/ms-marco-MiniLM-L-6-v2" | |
| # Rate limiting | |
| RATE_LIMIT_PER_MINUTE: int = 20 | |
| RATE_LIMIT_UPLOAD_PER_DAY: int = 50 | |
| # Defaults | |
| DEFAULT_CHUNK_SIZE: int = 512 | |
| DEFAULT_OVERLAP: int = 64 | |
| DEFAULT_TOP_K: int = 5 | |
| MAX_FILE_SIZE_MB: int = 50 | |
| # CORS | |
| CORS_ORIGINS: str = "" | |
| class Config: | |
| env_file = ".env" | |
| settings = Settings() | |