moheesh
got all my code
f29ea6c
"""
Central Configuration for SQL Learning Assistant
Handles local vs HuggingFace paths automatically
"""
import os
from dotenv import load_dotenv
load_dotenv()
# =============================================================================
# HUGGINGFACE CONFIGURATION (for cloud deployment)
# Set these in .env or Streamlit secrets
# =============================================================================
HF_MODEL_ID = os.getenv("HF_MODEL_ID", None) # e.g., "username/sql-tinyllama-lora"
HF_CHROMADB_ID = os.getenv("HF_CHROMADB_ID", None) # e.g., "username/sql-chromadb"
HF_TOKEN = os.getenv("HF_TOKEN", None)
# =============================================================================
# LOCAL PATHS
# =============================================================================
LOCAL_MODEL_DIR = "outputs/finetuning/checkpoints/final"
LOCAL_CHROMADB_DIR = "chromadb_data"
LOCAL_DATA_DIR = "data"
# =============================================================================
# GEMINI CONFIGURATION
# =============================================================================
GEMINI_KEYS = [
os.getenv("GEMINI_API_KEY"),
os.getenv("GEMINI_API_KEY_FALLBACK_1"),
os.getenv("GEMINI_API_KEY_FALLBACK_2"),
]
GEMINI_KEYS = [k for k in GEMINI_KEYS if k] # Remove None values
GEMINI_MODELS = [
os.getenv("GEMINI_MODEL", "gemini-2.5-flash"),
os.getenv("GEMINI_MODEL_FALLBACK_1"),
]
GEMINI_MODELS = [m for m in GEMINI_MODELS if m] # Remove None values
# =============================================================================
# RAG CONFIGURATION
# =============================================================================
EMBEDDING_MODEL = "all-MiniLM-L6-v2"
COLLECTION_NAME = "sql_knowledge"
# =============================================================================
# HELPER FUNCTIONS
# =============================================================================
def is_local():
"""Check if running locally (has local model/data)."""
return os.path.exists(LOCAL_MODEL_DIR) and os.path.exists(LOCAL_CHROMADB_DIR)
def is_cloud():
"""Check if running in cloud (has HF config)."""
return HF_MODEL_ID is not None or HF_CHROMADB_ID is not None
def get_model_source():
"""Get where model will be loaded from."""
if os.path.exists(LOCAL_MODEL_DIR) and os.listdir(LOCAL_MODEL_DIR):
return "local", LOCAL_MODEL_DIR
elif HF_MODEL_ID:
return "huggingface", HF_MODEL_ID
else:
return "base", "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
def get_chromadb_source():
"""Get where ChromaDB will be loaded from."""
if os.path.exists(LOCAL_CHROMADB_DIR) and os.listdir(LOCAL_CHROMADB_DIR):
return "local", LOCAL_CHROMADB_DIR
elif HF_CHROMADB_ID:
return "huggingface", HF_CHROMADB_ID
else:
return "build", LOCAL_DATA_DIR
def print_config():
"""Print current configuration."""
print("=" * 50)
print("CONFIGURATION")
print("=" * 50)
model_src, model_path = get_model_source()
chromadb_src, chromadb_path = get_chromadb_source()
print(f"Model: {model_src} β†’ {model_path}")
print(f"ChromaDB: {chromadb_src} β†’ {chromadb_path}")
print(f"Gemini Keys: {len(GEMINI_KEYS)} available")
print(f"Gemini Models: {GEMINI_MODELS}")
print("=" * 50)
if __name__ == "__main__":
print_config()