DocuRAG / Api /app /main.py
abadesalex's picture
midelware hhtps
4a02f65
raw
history blame
2.7 kB
import logging
from contextlib import asynccontextmanager
from app.modules.clearVariables.routes.clearVariables_route import \
router as clear_variables_routes
from app.modules.documentHandeler.routes.document_handeler_route import \
router as upload_file_routes
from app.modules.querySearch.routes.querySearch_route import \
router as query_search_routes
from fastapi import APIRouter, FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from transformers import (AutoModel, AutoModelForMaskedLM, AutoTokenizer,
pipeline)
@asynccontextmanager
async def lifespan(app: FastAPI):
dense_model_name = "sentence-transformers/all-MiniLM-L6-v2"
sparse_model_name = "prithivida/Splade_PP_en_v1"
qa_model_name = "deepset/roberta-base-squad2"
dense_tokenizer = AutoTokenizer.from_pretrained(dense_model_name)
dense_model = AutoModel.from_pretrained(dense_model_name)
sparse_tokenizer = AutoTokenizer.from_pretrained(sparse_model_name)
sparse_model = AutoModelForMaskedLM.from_pretrained(sparse_model_name)
qa_pipeline = pipeline("question-answering", model=qa_model_name)
yield {
"dense_tokenizer": dense_tokenizer,
"dense_model": dense_model,
"sparse_tokenizer": sparse_tokenizer,
"sparse_model": sparse_model,
"qa_pipeline": qa_pipeline,
}
app = FastAPI(lifespan=lifespan)
origins = [
"http://localhost:8000",
"http://localhost:3000",
"localhost:8000",
"https://abadesalex-docurag.hf.space/api",
"https://abadesalex-docurag.hf.space",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app_router = APIRouter(prefix="/api")
app_router.include_router(upload_file_routes, prefix="/document", tags=["document"])
app_router.include_router(query_search_routes, prefix="/query", tags=["query"])
app_router.include_router(clear_variables_routes, prefix="/clear", tags=["clear"])
# @app_router.get("/")
# async def root():
# return {"message": "Hello World"}
# Serve static files from the 'out/_next/static' directory
app.mount("/_next/static", StaticFiles(directory="app/out/_next/static"), name="static")
# Serve the main index.html
@app.get("/")
def read_root():
return FileResponse("app/out/index.html")
@app.on_event("startup")
async def startup_event():
logging.info("Application is starting up...")
@app.on_event("shutdown")
async def shutdown_event():
logging.info("Application is shutting down...")
app.include_router(app_router)