Spaces:
Sleeping
Sleeping
| """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 | |
| def get_settings() -> Settings: | |
| return Settings() # type: ignore[call-arg] | |
| settings: Settings = get_settings() | |