# app/config.py import os from typing import Optional from pydantic_settings import BaseSettings class Settings(BaseSettings): """ Application settings with environment variable support. All settings can be overridden via environment variables. """ # Database settings (existing) mariadb_host: str = "db" mariadb_user: str = "crumb" mariadb_password: str = "secret" mariadb_database: str = "crumbcrm" # Session settings (existing) secret_key: str = "change-me-in-production" # AI Provider API Keys openai_api_key: Optional[str] = None openrouter_api_key: Optional[str] = None anthropic_api_key: Optional[str] = None # RAG Configuration - Default Providers default_embedding_provider: str = "openrouter" # Use OpenRouter (supports both embeddings and Claude) default_embedding_model: str = "text-embedding-3-small" # Without openai/ prefix (works for both providers) default_completion_provider: str = "openrouter" default_completion_model: str = "anthropic/claude-3-5-sonnet" # Qdrant Configuration qdrant_host: str = "qdrant" qdrant_port: int = 6333 # RAG Settings rag_chunk_size: int = 1000 rag_chunk_overlap: int = 200 rag_collection_prefix: str = "posts" class Config: env_file = ".env" case_sensitive = False extra = "ignore" # Global settings instance settings = Settings() def get_settings() -> Settings: """ Get the global settings instance. Can be used as a FastAPI dependency. """ return settings