import pathlib import ast import os from pypdf import PdfReader import docx2txt from sqlalchemy import select from sqlalchemy.orm import Session import openai import cohere from models import Job, ENGINE openai.api_key = os.environ["OPEN_API_KEY"] co = cohere.Client(os.environ["COHERE_API_KEY"]) def gpt(user_query): response = openai.Completion.create( engine="text-davinci-003", prompt = user_query, max_tokens=1024, n=1, stop=None, temperature=0.5, ) return response['choices'][0]['text'] def parse_pdf(file_name): reader = PdfReader(file_name) page = reader.pages[0] resume_text = page.extract_text() return resume_text def parse_docx(file_name): file_text = docx2txt.process(file_name) return file_text # def get_dict(resume_text): # resume_dict = ast.literal_eval(gpt(f"""parse the resume and convert it into a Python string with the headings as "experience," "skills," "certifications," and "education". # resume: "{resume_text}" # resume_dict: """).strip()) # return resume_dict def parse(filename): resume_file = pathlib.Path(filename) text = parse_pdf(resume_file) if resume_file.suffix == ".pdf" else parse_docx(resume_file) print("parse"+"~"*10,text) # dct = get_dict(text) # print(dct) return text def rerank(job_id,docs,top_n): with Session(ENGINE) as session: stmt = select(Job).where(Job.job_id == job_id) job = session.scalars(stmt).one() post = job.post_name response = co.rerank( model = 'rerank-english-v2.0', query = f'Which profile suits most for the role of {post}?', documents = docs, top_n = top_n, ) print(response) return response