### config.py ```python import os from functools import lru_cache from typing import Optional from pydantic import BaseSettings, Field class Settings(BaseSettings): """Configuração centralizada da aplicação para.AI.""" # Ambiente app_name: str = Field(default="para.AI", env="APP_NAME") app_env: str = Field(default="dev", env="APP_ENV") debug: bool = Field(default=True, env="DEBUG") log_level: str = Field(default="INFO", env="LOG_LEVEL") # Banco de dados database_url: str = Field( default="postgresql://para_ai:para_ai@db:5432/para_ai", env="DATABASE_URL", ) db_pool_size: int = Field(default=20, env="DB_POOL_SIZE") db_max_overflow: int = Field(default=40, env="DB_MAX_OVERFLOW") # Arquivos files_base_path: str = Field(default="./data/files", env="FILES_BASE_PATH") # LLMs – chaves de API groq_api_key: Optional[str] = Field(default=None, env="GROQ_API_KEY") openai_api_key: Optional[str] = Field(default=None, env="OPENAI_API_KEY") anthropic_api_key: Optional[str] = Field(default=None, env="ANTHROPIC_API_KEY") # LLMs – limites e tuning llm_default_model_type: str = Field( default="balanced", env="LLM_DEFAULT_MODEL_TYPE" ) llm_max_tokens: int = Field(default=2048, env="LLM_MAX_TOKENS") llm_temperature: float = Field(default=0.7, env="LLM_TEMPERATURE") class Config: env_file = ".env" env_file_encoding = "utf-8" case_sensitive = False @lru_cache(maxsize=1) def get_settings() -> Settings: """Retorna instância singleton de Settings.""" return Settings()