Spaces:
Sleeping
Sleeping
| import os | |
| import nltk | |
| from pathlib import Path | |
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from fastapi.staticfiles import StaticFiles | |
| from fastapi.responses import FileResponse | |
| def initialize_nltk(): | |
| nltk_data_dir = os.environ.get("NLTK_DATA", os.path.expanduser("~/nltk_data")) | |
| os.makedirs(nltk_data_dir, exist_ok=True) | |
| if nltk_data_dir not in nltk.data.path: | |
| nltk.data.path.append(nltk_data_dir) | |
| resources = { | |
| "tokenizers/punkt": "punkt", | |
| "tokenizers/punkt_tab": "punkt_tab", | |
| "corpora/stopwords": "stopwords", | |
| } | |
| for path, package in resources.items(): | |
| try: | |
| nltk.data.find(path) | |
| print(f"Found NLTK resource: {package}") | |
| except LookupError: | |
| print(f"Downloading missing NLTK resource: {package} to {nltk_data_dir}...") | |
| nltk.download(package, download_dir=nltk_data_dir) | |
| initialize_nltk() | |
| from backend.routers.retrieval_router import router as retrieval_router | |
| from backend.routers.chunk_router import router as chunk_router | |
| app = FastAPI( | |
| title="RAG Visualizer", | |
| description="An X-Ray machine for RAG pipelines", | |
| version="0.1.0", | |
| ) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| app.include_router(chunk_router) | |
| app.include_router(retrieval_router) | |
| FRONTEND_DIR = Path(__file__).resolve().parent.parent / "frontend" | |
| app.mount("/static", StaticFiles(directory=str(FRONTEND_DIR)), name="static") | |
| def serve_frontend(): | |
| return FileResponse(str(FRONTEND_DIR / "index.html")) | |
| # Pre-warm the LLM referee model at startup so the first request doesn't experience model loading lag | |
| try: | |
| print("Pre-warming the LLM referee model...") | |
| from backend.engines.llm_client import OllamaClient | |
| OllamaClient()._get_pipeline() | |
| print("LLM referee model warmed up successfully.") | |
| except Exception as e: | |
| print(f"Failed to pre-warm LLM model: {e}") | |