devjhawar's picture
Upload folder using huggingface_hub
623b248 verified
"""App settings β€” reads from .env via pydantic-settings."""
from functools import lru_cache
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", case_sensitive=False)
# required β€” will error if missing
llama_cloud_api_key: str
supabase_url: str
supabase_service_key: str
# gemini (primary LLM)
gemini_api_key: str = ""
gemini_model: str = "gemini-3-flash-preview"
# kimi / moonshot (legacy β€” kept for backward compat, not required)
moonshot_api_key: str = ""
kimi_base_url: str = "https://api.moonshot.ai/v1"
kimi_model: str = "moonshot-v1-8k"
# groq
groq_api_key: str = ""
groq_model: str = "openai/gpt-oss-20b"
# optional provider keys
openai_api_key: str = ""
jina_api_key: str = ""
cohere_api_key: str = ""
# supabase / vector store
vector_table_name: str = "policy_chunks"
vector_store_provider: str = "supabase"
# embedding
embedding_provider: str = "jina"
embedding_model: str = "jina-embeddings-v3"
embedding_dimension: int = 768
# llm
llm_provider: str = "groq"
llm_model: str = "openai/gpt-oss-20b"
# reranker
reranker_provider: str = "cross_encoder"
# backend integration
port: int = 4000
python_api_url: str = "http://localhost:8000"
debug: bool = False
@lru_cache()
def get_settings() -> Settings:
return Settings() # type: ignore[call-arg]
settings: Settings = get_settings()