from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, PyprojectTomlConfigSettingsSource, ) from typing import Tuple, Type class Settings(BaseSettings): @classmethod def settings_customise_sources( cls, settings_cls: Type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, ) -> Tuple[PydanticBaseSettingsSource, ...]: return ( init_settings, PyprojectTomlConfigSettingsSource(settings_cls), env_settings, dotenv_settings, file_secret_settings, ) class AppSettings(Settings): # backend llm_model: str llm_region: str model_provider: str embedding_model: str embedding_size: int vector_db_url: str vector_db_collection_name: str # secrets aws_access_key_id: str aws_secret_access_key: str langfuse_public_api_key: str langfuse_secret_api_key: str langfuse_host: str test_user_name: str test_user_password: str model_config = SettingsConfigDict( pyproject_toml_table_header=("tool", "app_config"), env_file=".env", env_file_encoding="utf-8", extra="ignore", ) app_settings = AppSettings()