Easonwangzk's picture
Initial commit with Git LFS
ab26b91
raw
history blame
2.68 kB
# -*- 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")