coderound / backend /src /config.py
ketannnn's picture
feat: implement backend ingestion pipeline with Celery workers, Qdrant integration, and session management
96fe8d8
from pydantic_settings import BaseSettings, SettingsConfigDict
from functools import lru_cache
import itertools
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
database_url: str
qdrant_url: str
qdrant_api_key: str
redis_url: str
groq_api_key: str
groq_model: str = "llama-3.3-70b-versatile"
embedding_model: str = "BAAI/bge-small-en-v1.5"
reranker_model: str = "BAAI/bge-reranker-v2-m3"
collection_name: str = "candidates_v1"
vector_size: int = 384
@property
def groq_keys_list(self) -> list[str]:
return [k.strip() for k in self.groq_api_key.split(",") if k.strip()]
@lru_cache
def get_settings() -> Settings:
return Settings()
# Global memory state for circular revolving queue inside this worker thread
_groq_key_cycler = None
def get_revolving_groq_key() -> str:
global _groq_key_cycler
if _groq_key_cycler is None:
_groq_key_cycler = itertools.cycle(get_settings().groq_keys_list)
return next(_groq_key_cycler)