#Fast APi Packages from fastapi import FastAPI,File from pydantic import BaseModel import json #SkillExtraction Packages import psycopg2 import pandas as pd import numpy as np from sentence_transformers import SentenceTransformer import spacy from sklearn.metrics.pairwise import cosine_similarity from spacy.matcher import PhraseMatcher from skillNer.general_params import SKILL_DB from skillNer.skill_extractor_class import SkillExtractor from psycopg2.extensions import register_adapter, AsIs register_adapter(np.int64, AsIs) import warnings warnings.filterwarnings('ignore') #Custom Classes for endpoints from DbConnection import DbConnection from UploadFile import UploadOpenFile from SkillExtract import SkillExtractorDetails from ExtractContentsFromFile import ExtractContentFromFile from RemoveSkills import RemoveSkill from AddSkillDetails import AddSkill from SkillMatcher import SkillMatch from SkillExtractV1 import SkillExtractorDetailsV1 import ClassModals import os os.environ['HF_HOME'] = '/hug/cache/' app = FastAPI() nlp = spacy.load("en_core_web_lg") # init skill extractor skill_extractor = SkillExtractor(nlp, SKILL_DB, PhraseMatcher) model = SentenceTransformer('all-MiniLM-L6-v2') @app.get("/") async def root(): return {"SkillAPI":"SkillAPi Version 1.00, https://vaibhav84-resumeapi.hf.space/redoc , https://vaibhav84-resumeapi.hf.space/docs"} def parse_csv(df): res = df.to_json(orient="records") parsed = json.loads(res) return parsed @app.post("/UploadJobDescription/") async def UploadJobDescription(file: bytes = File(...), FileName: str = "sample.pdf"): try: text= ExtractContentFromFile.ExtractDataFromFile(FileName,file) returnSkills = SkillExtractorDetailsV1.GetSkillData(skill_extractor,text) return parse_csv(returnSkills) except Exception as e: return "An error occurred: {e}" @app.delete("/RemoveSkillsByName/") def RemoveSkills(SkillName : str): RemoveSkill.RemoveSkillDetails(SkillName) return "Skill Removed Successfully" @app.post("/AddSkillDetails/") def AddSkills(Skills : ClassModals.Modals.AddSkillDetails): skilldetailsStr = Skills.SkillName + ',' + Skills.SkillType + ',' + str(Skills.SkillScore) return AddSkill.AddSkillDetails(skilldetailsStr) @app.put("/UpdateSkillDetails/") def UpdateSkills(Skills : ClassModals.Modals.UpdateSkillDetails): skilldetailsStr = Skills.SkillName + ',' + str(Skills.SkillWeightage) return AddSkill.UpdateSkillDetails(skilldetailsStr) @app.get("/GetAllSkillDetails/") def AllSkills(): return (AddSkill.GetSkillDetails()) #return JSONResponse(content={"message": "Here's your interdimensional portal." , "mes1":"data2"}) #https://vaibhav84-resumeapi.hf.space/docs #https://vaibhav84-resumeapi.hf.space/redoc d