Hussam
minor fixes to API config
ec5cc7e
raw
history blame
1.87 kB
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,
)