Spaces:
Sleeping
Sleeping
| 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")) | |
| 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) | |