# -*- coding: utf-8 -*- """ Configuration Management for Amazon Multimodal RAG Project ----------------------------------------------------------- Centralizes all configuration values with environment variable support. """ import os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() # ============================================== # Data Paths # ============================================== CSV_PATH = os.getenv("CSV_PATH", "amazon_multimodal_clean.csv") CHROMA_DIR = os.getenv("CHROMA_DIR", "chromadb_store") IMAGE_DIR = os.getenv("IMAGE_DIR", "images") # ============================================== # Model Configuration # ============================================== # LLM Provider Selection USE_OPENAI = os.getenv("USE_OPENAI", "true").lower() == "true" # OpenAI Configuration (GPT-4) OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o") OPENAI_MAX_TOKENS = int(os.getenv("OPENAI_MAX_TOKENS", "512")) OPENAI_TEMPERATURE = float(os.getenv("OPENAI_TEMPERATURE", "0.2")) # Fallback: Local HuggingFace Models (if USE_OPENAI=false) # Options: # - "mistralai/Mistral-7B-Instruct-v0.3" # - "meta-llama/Meta-Llama-3-8B-Instruct" # - "mistralai/Mixtral-8x7B-Instruct-v0.1" LLM_MODEL = os.getenv("LLM_MODEL", "mistralai/Mistral-7B-Instruct-v0.3") # CLIP Model CLIP_MODEL = os.getenv("CLIP_MODEL", "ViT-B/32") # ============================================== # API Server Configuration # ============================================== API_HOST = os.getenv("API_HOST", "0.0.0.0") API_PORT = int(os.getenv("API_PORT", "8000")) # CORS Settings (comma-separated list for production) # Development: "*" # Production: "https://yourdomain.com,https://www.yourdomain.com" ALLOWED_ORIGINS = os.getenv("ALLOWED_ORIGINS", "*").split(",") # ============================================== # Retrieval Configuration # ============================================== TOP_K_PRODUCTS = int(os.getenv("TOP_K_PRODUCTS", "5")) MAX_TEXT_LENGTH = int(os.getenv("MAX_TEXT_LENGTH", "400")) # ============================================== # LLM Generation Configuration # ============================================== LLM_MAX_TOKENS = int(os.getenv("LLM_MAX_TOKENS", "512")) LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0.2")) # ============================================== # Image Download Configuration # ============================================== IMAGE_DOWNLOAD_TIMEOUT = int(os.getenv("IMAGE_DOWNLOAD_TIMEOUT", "5")) # ============================================== # Logging Configuration # ============================================== LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")