# app/config.py - Application configuration from pydantic_settings import BaseSettings from typing import Optional from functools import lru_cache class Settings(BaseSettings): """Application settings loaded from environment variables.""" # Application APP_NAME: str = "Scam Honeypot API" VERSION: str = "2.0.0" DEBUG: bool = False GUVI_API_KEY: str = "" # Set via environment variable 'GUVI_API_KEY' # LLM Configuration LLM_PROVIDER: str = "groq" OPENAI_API_KEY: Optional[str] = None ANTHROPIC_API_KEY: Optional[str] = None GROQ_API_KEY: Optional[str] = None OPENROUTER_API_KEY: Optional[str] = None # Model names GPT_MODEL: str = "gpt-4-turbo-preview" CLAUDE_MODEL: str = "claude-3-sonnet-20240229" GROQ_MODEL: str = "llama-3.3-70b-versatile" OPENROUTER_MODEL: str = "meta-llama/llama-3.1-70b-instruct" # LLM parameters LLM_TEMPERATURE: float = 0.7 LLM_MAX_TOKENS: int = 500 # Conversation MAX_CONVERSATION_LENGTH: int = 50 CONVERSATION_TTL_HOURS: int = 24 # Rate Limiting RATE_LIMIT_PER_MINUTE: int = 60 # Feature Flags ENABLE_LLM_DETECTION: bool = True ENABLE_LLM_RESPONSES: bool = True ENABLE_THREAT_INTELLIGENCE: bool = True ENABLE_LAW_ENFORCEMENT_API: bool = True # Database (SQLite default, PostgreSQL/Supabase via env) DATABASE_URL: str = "sqlite+aiosqlite:///./data/honeypot.db" # Compliance SANDBOX_MODE: bool = True ANONYMIZE_LOGS: bool = True SYNTHETIC_DATA_ONLY: bool = True class Config: env_file = ".env" env_file_encoding = "utf-8" case_sensitive = True @lru_cache() def get_settings() -> Settings: return Settings() settings = get_settings()