File size: 1,061 Bytes
83fe4f9
 
 
 
 
 
 
 
 
 
 
 
 
 
fb38df2
 
83fe4f9
fb38df2
 
 
 
83fe4f9
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
from functools import lru_cache

from pydantic import BaseModel, Field
from dotenv import load_dotenv

load_dotenv()


class Settings(BaseModel):
    app_name: str = "FlowPilot"
    api_prefix: str = "/api"
    database_url: str = "sqlite:///./flowpilot.db"
    allow_origins: list[str] = Field(default_factory=lambda: _split_csv(os.getenv("ALLOW_ORIGINS", "*")))
    ai_provider: str = os.getenv("AI_PROVIDER", "groq")
    analyze_with_ai: bool = os.getenv("ANALYZE_WITH_AI", "false").lower() == "true"
    gmail_poll_seconds: int = int(os.getenv("GMAIL_POLL_SECONDS", "30"))
    groq_api_key: str = os.getenv("GROQ_API_KEY", "")
    groq_model: str = os.getenv("GROQ_MODEL", "llama-3.3-70b-versatile")
    groq_base_url: str = os.getenv("GROQ_BASE_URL", "https://api.groq.com/openai/v1")
    groq_timeout_seconds: float = float(os.getenv("GROQ_TIMEOUT_SECONDS", "8"))


def _split_csv(value: str) -> list[str]:
    return [item.strip() for item in value.split(",") if item.strip()]


@lru_cache
def get_settings() -> Settings:
    return Settings()