rajiv-ramteke's picture
Update default port to 7860 for Hugging Face Spaces compatibility
9168eea
Raw
History Blame Contribute Delete
2.57 kB
"""
backend/utils/config.py
========================
Centralised application configuration using Pydantic Settings.
All values are read from environment variables / .env file.
"""
from functools import lru_cache
from typing import Literal
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Application settings loaded from .env"""
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
case_sensitive=False,
extra="ignore",
)
# ── LLM Provider ─────────────────────────────────────────
LLM_PROVIDER: Literal["openai", "huggingface"] = "openai"
OPENAI_API_KEY: str = ""
OPENAI_MODEL: str = "gpt-3.5-turbo"
OPENAI_BASE_URL: str | None = None
HUGGINGFACE_API_KEY: str = ""
HF_SUMMARIZATION_MODEL: str = "facebook/bart-large-cnn"
# ── Whisper ASR ───────────────────────────────────────────
WHISPER_MODEL: Literal["tiny", "base", "small", "medium", "large"] = "tiny"
WHISPER_DEVICE: Literal["cpu", "cuda"] = "cpu"
# ── Text Processing ───────────────────────────────────────
MAX_CHUNK_SIZE: int = 1000
CHUNK_OVERLAP: int = 200
# ── FAISS / Embeddings ────────────────────────────────────
EMBEDDING_MODEL: str = "all-MiniLM-L6-v2"
FAISS_INDEX_PATH: str = "data/embeddings/faiss.index"
# ── Application ───────────────────────────────────────────
APP_HOST: str = "0.0.0.0"
APP_PORT: int = 7860
DEBUG: bool = True
# ── File Storage ──────────────────────────────────────────
UPLOAD_DIR: str = "data/videos"
AUDIO_DIR: str = "data/audio"
TRANSCRIPT_DIR: str = "data/transcripts"
SUMMARY_DIR: str = "data/summaries"
OUTPUT_DIR: str = "outputs"
MAX_FILE_SIZE_MB: int = 500
@property
def max_file_size_bytes(self) -> int:
return self.MAX_FILE_SIZE_MB * 1024 * 1024
@lru_cache()
def get_settings() -> Settings:
return Settings()
# Singleton instance used throughout the app
settings: Settings = get_settings()