| """ |
| Central configuration for the DSA RAG Chatbot. |
| No magic numbers should be hardcoded anywhere else in the codebase — import from here. |
| """ |
|
|
| import os |
| from dotenv import load_dotenv |
|
|
| load_dotenv() |
|
|
| BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
|
|
| |
| |
| |
| SECRET_KEY = os.getenv("SECRET_KEY", "dev-secret-key-change-me") |
| SESSION_COOKIE_NAME = "dsa_chatbot_session" |
| SESSION_LIFETIME_MINUTES = int(os.getenv("SESSION_LIFETIME_MINUTES", 60 * 24 * 7)) |
|
|
| |
| |
| |
| DATABASE_PATH = os.path.join(BASE_DIR, "database", "app.db") |
| SQLALCHEMY_DATABASE_URI = f"sqlite:///{DATABASE_PATH}" |
| SQLALCHEMY_TRACK_MODIFICATIONS = False |
|
|
| |
| |
| |
| KNOWLEDGE_BASE_DIR = os.path.join(BASE_DIR, "rag", "knowledge_base") |
| TOPIC_METADATA_PATH = os.path.join(BASE_DIR, "rag", "knowledge_base", "topic_metadata.json") |
| CHROMA_DB_DIR = os.path.join(BASE_DIR, "rag", "chroma_db") |
| CHROMA_COLLECTION_NAME = "dsa_knowledge_base" |
|
|
| EMBEDDING_MODEL_NAME = "all-MiniLM-L6-v2" |
|
|
| |
| |
| KB_SECTION_HEADERS = [ |
| "DEFINITION", |
| "TIME_COMPLEXITY", |
| "SPACE_COMPLEXITY", |
| "USE_WHEN", |
| "EXAMPLE", |
| ] |
|
|
| |
| |
| |
| INITIAL_RETRIEVAL_K = int(os.getenv("INITIAL_RETRIEVAL_K", 15)) |
| TOP_K = int(os.getenv("TOP_K", 5)) |
| SIMILARITY_THRESHOLD = float(os.getenv("SIMILARITY_THRESHOLD", 0.45)) |
|
|
| |
| |
| |
| USE_MEM0 = os.getenv("USE_MEM0", "True") == "True" |
| MEM0_LOCAL_STORAGE_DIR = os.path.join(BASE_DIR, "memory", "mem0_store") |
|
|
| |
| |
| |
| MAX_RECENT_HISTORY_MESSAGES = int(os.getenv("MAX_RECENT_HISTORY_MESSAGES", 6)) |
|
|
| |
| |
| |
| |
| |
| |
| |
| LLM_PROVIDER = os.getenv("LLM_PROVIDER", "groq") |
|
|
| LOCAL_MODEL_NAME = os.getenv("LOCAL_MODEL_NAME", "mistralai/Mistral-7B-Instruct-v0.2") |
| LOCAL_MODEL_MAX_NEW_TOKENS = int(os.getenv("LOCAL_MODEL_MAX_NEW_TOKENS", 512)) |
| LOCAL_MODEL_TEMPERATURE = float(os.getenv("LOCAL_MODEL_TEMPERATURE", 0.3)) |
| LOCAL_MODEL_LOAD_IN_4BIT = os.getenv("LOCAL_MODEL_LOAD_IN_4BIT", "True") == "True" |
|
|
| GROQ_API_KEY = os.getenv("GROQ_API_KEY") |
| GROQ_MAX_TOKENS = int(os.getenv("GROQ_MAX_TOKENS", 1024)) |
| GROQ_MODEL_NAME = os.getenv("GROQ_MODEL_NAME", "llama-3.3-70b-versatile") |
|
|
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") |
| OPENAI_MODEL_NAME = os.getenv("OPENAI_MODEL_NAME", "") |
|
|
| |
| |
| |
| LOG_DIR = os.path.join(BASE_DIR, "logs") |
| LOG_FILE_PATH = os.path.join(LOG_DIR, "app.log") |
| LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") |
|
|