JobSimpliFY / llm.py
EnigmaOfTheWorld's picture
Upload 7 files
a101471
raw
history blame contribute delete
No virus
2.02 kB
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