30 lines
889 B
Python
30 lines
889 B
Python
"""Configuration applicative centralisée (principe 12-factor : config via env).
|
|
|
|
Équivalent Python du `application.properties` Spring Boot, avec validation
|
|
Pydantic : une variable manquante/invalide = crash au démarrage, pas une
|
|
NullPointerException surprise à la 3ème requête.
|
|
"""
|
|
from functools import lru_cache
|
|
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Settings chargés depuis .env ou variables d'environnement."""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
)
|
|
|
|
ollama_base_url: str = "http://localhost:11434"
|
|
llm_model: str = "gemma4:e2b"
|
|
llm_timeout_seconds: int = 120
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> Settings:
|
|
"""Singleton via cache — FastAPI l'injecte avec Depends() dans les routes."""
|
|
return Settings()
|