BI_Assistant_Backend / app /settings.py
MohitGupta41
Initial Project commit
bd7254f
from typing import List, Optional
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import Field, AliasChoices, computed_field
import json, os
# ensure sane defaults for caches
os.environ.setdefault("HOME", "/workspace")
os.environ.setdefault("INSIGHTFACE_HOME", "/workspace/cache/insightface")
os.environ.setdefault("MPLCONFIGDIR", "/workspace/cache/matplotlib")
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
INDEX_DIR: str = "/workspace/data/index"
CACHE_DIR: str = "/workspace/cache"
THRESHOLD: float = 0.50
MARGIN: float = 0.05
TIMEOUT: int = 180
TOPK_DB: int = 20
TOPK_SHOW: int = 3
SQLITE_PATH: str = "/workspace/data/demo.db"
LLM_MODEL_ID: str = "google/gemma-3-27b-it"
HF_TOKEN: Optional[str] = None
LLM_MAX_NEW_TOKENS: int = 200
LLM_TEMPERATURE: float = 0.2
PROVIDERS_RAW: Optional[str] = Field(default=None, validation_alias=AliasChoices("PROVIDERS"))
@computed_field(return_type=List[str])
@property
def PROVIDERS(self) -> List[str]:
s = (self.PROVIDERS_RAW or "").strip()
if not s:
return ["CPUExecutionProvider"]
if s.startswith("["):
return json.loads(s)
return [p.strip() for p in s.split(",") if p.strip()]
settings = Settings()
os.makedirs(settings.INDEX_DIR, exist_ok=True)
os.makedirs(settings.CACHE_DIR, exist_ok=True)