afterimage / backend /app /config.py
KryptosK's picture
Afterimage live backend (FastAPI + FastEmbed + embedded Qdrant)
850c319 verified
Raw
History Blame Contribute Delete
1.42 kB
from functools import lru_cache
from pathlib import Path
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
qdrant_url: str = Field(default="http://localhost:6333", alias="QDRANT_URL")
qdrant_api_key: str | None = Field(default=None, alias="QDRANT_API_KEY")
asset_root: Path = Field(default=Path("../data/assets"), alias="AFTERIMAGE_ASSET_ROOT")
manifest_path: Path = Field(default=Path("../data/manifest.json"), alias="AFTERIMAGE_MANIFEST")
allow_fake_embeddings: bool = Field(default=False, alias="AFTERIMAGE_ALLOW_FAKE_EMBEDDINGS")
cors_origins: str = Field(default="http://localhost:5173", alias="AFTERIMAGE_CORS_ORIGINS")
collection_name: str = "object_memory"
vector_size: int = 512
model_name: str = "Qdrant/clip-ViT-B-32-vision"
text_model_name: str = "Qdrant/clip-ViT-B-32-text"
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
@property
def cors_origin_list(self) -> list[str]:
return [origin.strip() for origin in self.cors_origins.split(",") if origin.strip()]
@property
def resolved_asset_root(self) -> Path:
return self.asset_root.expanduser().resolve()
@property
def resolved_manifest_path(self) -> Path:
return self.manifest_path.expanduser().resolve()
@lru_cache
def get_settings() -> Settings:
return Settings()