import os import shutil import tempfile from tempfile import NamedTemporaryFile from pathlib import Path from fastapi import FastAPI, UploadFile from fastapi.middleware import Middleware from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import StreamingResponse from .rag import ChatPDF middleware = [ Middleware( CORSMiddleware, allow_origins=["*"], allow_methods=['*'], allow_headers=['*'] ) ] app = FastAPI(middleware=middleware) files_dir = os.path.expanduser("~/wtp_be_files/") session_assistant = ChatPDF() @app.get("/query") async def process_input(text: str): if text and len(text.strip()) > 0: text = text.strip() print("PRINTING STREAM") return StreamingResponse(session_assistant.ask(text), media_type='text/event-stream') @app.post("/upload") def upload(files: list[UploadFile]): session_assistant.clear() try: os.makedirs(files_dir) for file in files: try: path = f"{files_dir}/{file.filename}" file.file.seek(0) with open(path, 'wb') as destination: shutil.copyfileobj(file.file, destination) finally: file.file.close() finally: session_assistant.ingest(files_dir) shutil.rmtree(files_dir) return "Files inserted!" @app.get("/") def ping(): return "Pong!"