Spaces:
Sleeping
Sleeping
File size: 1,447 Bytes
9213a97 233fa68 8635481 2cef617 9213a97 2cef617 426e9fe 2cef617 efc1009 8635481 e7c1bc2 8635481 9213a97 8635481 9213a97 2cef617 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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)
|