File size: 1,084 Bytes
c1dbdc6 a0f1a88 c1dbdc6 96fe8d8 c1dbdc6 96fe8d8 c1dbdc6 a0f1a88 c1dbdc6 a0f1a88 | 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 | 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)
|