from dotenv import load_dotenv import os import logging from pathlib import Path load_dotenv() # Logging configuration logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) class Config: # Crawling and content configuration MAX_PAGES_TO_CRAWL = int(os.getenv('MAX_PAGES_TO_CRAWL', 20)) MAX_LINKS_PER_PAGE = int(os.getenv('MAX_LINKS_PER_PAGE', 10)) MAX_CONTEXT_LENGTH = int(os.getenv('MAX_CONTEXT_LENGTH', 4000)) MAX_HISTORY_MESSAGES = int(os.getenv('MAX_HISTORY_MESSAGES', 20)) # Model configuration EMBEDDING_MODEL = os.getenv('EMBEDDING_MODEL', 'all-MiniLM-L6-v2') OLLAMA_BASE_URL = os.getenv('OLLAMA_BASE_URL', 'http://localhost:11434') OLLAMA_MODEL = os.getenv('OLLAMA_MODEL', 'mistral') # Path configuration BASE_DIR = Path(__file__).parent.parent SESSIONS_DIR = os.path.join(BASE_DIR, "sessions") # Qdrant configuration (new) QDRANT_HOST = os.getenv('QDRANT_HOST', 'localhost') QDRANT_PORT = int(os.getenv('QDRANT_PORT', 6333)) QDRANT_COLLECTION_PREFIX = os.getenv('QDRANT_COLLECTION_PREFIX', 'Chat-Bot') QDRANT_URL = os.getenv('QDRANT_URL', 'https://6fe012ee-5a7c-4304-a77c-293a1888a9cf.us-west-2-0.aws.cloud.qdrant.io') QDRANT_API_KEY = os.getenv('QDRANT_API_KEY', None) # For cloud version # MongoDB configuration MONGO_URI = os.getenv('MONGO_URI', "mongodb+srv://mehulxy21:bETCO7iP1hYl0924@amazondb.6ploi6k.mongodb.net/") DATABASE_NAME = os.getenv('DATABASE_NAME', "rag_chat_history") HISTORY_COLLECTION = os.getenv('HISTORY_COLLECTION', "conversations") @staticmethod def create_storage_dirs(): """Create necessary directories for storage""" os.makedirs(Config.SESSIONS_DIR, exist_ok=True) logger.info(f"Sessions directory created at: {Config.SESSIONS_DIR}") # Create data directory if it doesn't exist data_dir = os.path.join(Config.BASE_DIR, "data") os.makedirs(data_dir, exist_ok=True) logger.info(f"Data directory created at: {data_dir}") # Session Management SESSION_INACTIVITY_TIMEOUT = 3600 # 1 hour in seconds SESSION_CLEANUP_INTERVAL = 600