| # -*- 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") | |