import sys from pathlib import Path import os sys.path.append(str(Path(__file__).resolve().parent.parent)) #print(sys.path) from typing import Any from fastapi import FastAPI, Request, APIRouter, Form from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from fastapi.middleware.cors import CORSMiddleware from app.config import settings from app import __version__ from app.pyfiles import subject_gen import numpy as np import pandas as pd # from transformers import GPT2Tokenizer ,GPT2Model current_path = os.path.dirname(os.path.abspath(__file__)) # model = GPT2Model.from_pretrained("gpt2") # tokenizer = GPT2Tokenizer.from_pretrained("gpt2") # checkpoint1 = os.path.join(current_path, "pyfiles") # checkpoint = os.path.join(checkpoint1, "gpt_tokenizer") # model.save_pretrained(checkpoint) # tokenizer.save_pretrained(checkpoint) app = FastAPI( title=settings.PROJECT_NAME, openapi_url=f"{settings.API_V1_STR}/openapi.json" ) # app.mount("/static", StaticFiles(directory="app/static"), name="static") # To access Templates directory templates = Jinja2Templates(directory="app/templates") email_inp = None #################################### Home Page endpoints ################################################# @app.get("/") async def root(request: Request): return templates.TemplateResponse("index.html", {'request': request,}) @app.get("/email_input/") async def email_input_root(request: Request): print("hi im in email input" ) return templates.TemplateResponse("email_input.html", {'request': request,}) @app.post("/subject_generation/") async def create_upload_files(request: Request , paragraphInput: str = Form(...)): print("hi im in subject gen", paragraphInput ) result = subject_gen.subject_gen_func(paragraphInput) # print(result) if(len(result.split(""))>1): subject = result.split("")[1].replace("","") else : subject = "Please Try Again" return templates.TemplateResponse("subject_generation.html", {"request": request, "result":subject, "email":paragraphInput,}) @app.get("/question_input/") async def question_input_root(request: Request): return templates.TemplateResponse("question_input.html", {'request': request,}) @app.post("/question_input/") async def question_awnser(request: Request , questionInput: str = Form(...)): # print("hi im in subject gen", paragraphInput ) result = qa_gen.question_awnser(questionInput) # print(result) if(len(result)>1): awnser = result else : awnser = "Please Try Again" return templates.TemplateResponse("awnser_generation.html", {"request": request, "result":awnser, "question":questionInput,}) # Set all CORS enabled origins if settings.BACKEND_CORS_ORIGINS: app.add_middleware( CORSMiddleware, allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Start app if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8001)