from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict import logging logger = logging.getLogger(__name__) class Settings(BaseSettings): OPENAI_API_KEY: str = Field("", env="OPENAI_API_KEY") AZURE_DI_ENDPOINT: str = Field("", env="AZURE_DI_ENDPOINT") AZURE_DI_KEY: str = Field("", env="AZURE_DI_KEY") # Azure OpenAI AZURE_OPENAI_ENDPOINT: str = Field("", env="AZURE_OPENAI_ENDPOINT") AZURE_OPENAI_DEPLOYMENT: str = Field("", env="AZURE_OPENAI_DEPLOYMENT") AZURE_OPENAI_API_VERSION: str = Field("2025-03-01-preview", env="AZURE_OPENAI_API_VERSION") AZURE_OPENAI_API_KEY: str = Field("", env="AZURE_OPENAI_API_KEY") AZURE_OPENAI_EMBEDDING_MODEL: str = Field("text-embedding-3-small", env="AZURE_OPENAI_EMBEDDING_MODEL") # Retry configuration LLM_MAX_RETRIES: int = Field(=, env="LLM_MAX_RETRIES") LLM_BASE_DELAY: float = Field(1.0, env="LLM_BASE_DELAY") LLM_MAX_DELAY: float = Field(60.0, env="LLM_MAX_DELAY") model_config: SettingsConfigDict = {"env_file": ".env"} def __init__(self, **kwargs): super().__init__(**kwargs) logger.info(f"Settings initialized with API version: {self.AZURE_OPENAI_API_VERSION}") logger.info(f"LLM retry config: max_retries={self.LLM_MAX_RETRIES}, base_delay={self.LLM_BASE_DELAY}s") settings = Settings()