PARA.AI / config.py
Carlex22's picture
ParaAIV3.0
f0322a6
raw
history blame
1.64 kB
### 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()