40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
from fastapi import FastAPI, Request, Form
|
|
from fastapi.responses import HTMLResponse
|
|
from fastapi.templating import Jinja2Templates
|
|
from loguru import logger
|
|
import uvicorn
|
|
|
|
import services
|
|
|
|
|
|
app = FastAPI()
|
|
templates = Jinja2Templates(directory="templates")
|
|
cache = {}
|
|
|
|
@app.get("/", response_class=HTMLResponse)
|
|
def summarize_get(root: Request):
|
|
return templates.TemplateResponse("index.html", {"request": root})
|
|
|
|
@app.post("/", response_class=HTMLResponse)
|
|
def summarize_post(summarize: Request, url: str = Form(...)):
|
|
file_name, summary = services.generate_summary(url)
|
|
#summary = "test summary"
|
|
cache["current"] = {url: {"summary": summary, "file_name": file_name}}
|
|
logger.debug(f"state of the cache is:\n{cache}")
|
|
return templates.TemplateResponse("index.html", {"request": summarize, "summary": summary, "url": url})
|
|
|
|
@app.post("/ragqa", response_class=HTMLResponse)
|
|
def ask_post(request: Request, question: str = Form(...), url: str = Form(...)):
|
|
file_name = cache["current"][url]["file_name"]
|
|
answer = services.answer_using_rag(
|
|
query=question,
|
|
file_name=file_name
|
|
)
|
|
cache["current"][url]["answer"] = answer
|
|
summary = cache["current"][url]["summary"]
|
|
return templates.TemplateResponse("index.html", {"request": request, "summary": summary, "url": url, "answer": answer})
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run(app, host="0.0.0.0", port=8000) |