Spaces:
Runtime error
Runtime error
from pydantic import Field, MongoDsn, NonNegativeFloat, NonNegativeInt, PositiveInt, SecretStr | |
from pydantic_settings import BaseSettings, SettingsConfigDict | |
from typing import Literal, Optional | |
class Settings(BaseSettings): # TODO: Strong guarantees of validity, because garbage in = garbage out, and settings flow into all the nooks and crannies | |
""" | |
Application settings loaded from environment variables. | |
""" | |
# Application Configuration | |
DEBUG: bool = False | |
# Logging Configuration | |
LOG_LEVEL: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = Field(default_factory=lambda data: "DEBUG" if data.get("DEBUG", False) else "INFO") | |
LOG_FORMAT: Literal["text", "json"] = "json" | |
# API Configuration | |
API_HOST: str = "0.0.0.0" | |
API_PORT: int = 8000 | |
# APScheduler Configuration | |
SCHEDULER_TIMEZONE: Optional[str] = "UTC" | |
# Slack Configuration | |
SLACK_USER_TOKEN: Optional[SecretStr] = None | |
SLACK_BOT_TOKEN: SecretStr | |
SLACK_SIGNING_SECRET: Optional[SecretStr] = None | |
SLACK_APP_TOKEN: SecretStr | |
# Vectorization Configuration | |
EMBEDDING_MODEL: str | |
VECTOR_DIMENSION: PositiveInt | |
CHUNK_SIZE: PositiveInt | |
CHUNK_OVERLAP: NonNegativeInt | |
TOP_K_MATCHES: PositiveInt | |
# MongoDB Configuration | |
MONGODB_URI: SecretStr # TODO: Contemplate switching to MongoDsn type for the main URL, and separate out the credentials to SecretStr variables. | |
MONGODB_NAME: str | |
SCORE_THRESHOLD: NonNegativeFloat | |
# Hugging Face Configuration | |
HF_API_TOKEN: Optional[SecretStr] = None | |
# OpenAI Configuration | |
OPENAI_API_KEY: SecretStr | |
CHAT_MODEL: str | |
MAX_TOKENS: PositiveInt | |
TEMPERATURE: NonNegativeFloat | |
SYSTEM_PROMPT: str | |
model_config = SettingsConfigDict( | |
env_file=".env", | |
env_file_encoding="utf-8", | |
case_sensitive=True, | |
) | |