jabil / app.py
Fariddvp's picture
Update app.py
6d28c28 verified
raw
history blame
No virus
3.39 kB
import gradio as gr
import openai
import os
import fitz # PyMuPDF
# Set OpenAI API key from environment variable
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
raise ValueError("OpenAI API key not found. Please set it in the environment variables.")
openai.api_key = api_key
def extract_text_from_pdf(pdf_file):
try:
# Open the PDF file
document = fitz.open(pdf_file.name)
text = ""
# Extract text from each page
for page_num in range(len(document)):
page = document.load_page(page_num)
text += page.get_text()
return text
except Exception as e:
return f"Error extracting text from PDF: {e}"
def extract_keywords(job_description):
prompt = f"""به عنوان یک تحلیلگر حرفه‌ای، لطفا مهم‌ترین کلمات کلیدی را از شرح شغل زیر استخراج کنید:
شرح شغل: {job_description}
پاسخ را به صورت یک لیست از کلمات کلیدی ارائه دهید.
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
],
temperature=0
)
keywords = response.choices[0].message['content']
return keywords
except Exception as e:
return f"Error during keyword extraction: {e}"
def evaluate_resume(pdf_file, job_description):
# Extract keywords from job description
keywords = extract_keywords(job_description)
if "Error" in keywords:
return keywords
# Extract text from PDF
resume_text = extract_text_from_pdf(pdf_file)
if "Error" in resume_text:
return resume_text
prompt = f"""به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه در برابر شرح شغل و کلمات کلیدی استخراج شده است.
لطفاً رزومه فرد را با کلمات کلیدی زیر مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق را محاسبه کنید.
کلمات کلیدی: {keywords}
رزومه: {resume_text}
من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
{{"تطابق شرح شغل با رزومه فرد ":"%"، "تعداد کلمات کلیدی غیر منطبق ":""، "تعداد کلمات کلیدی منطبق ":" }}
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
],
temperature=0
)
return response.choices[0].message['content']
except Exception as e:
return f"Error during resume evaluation: {e}"
iface = gr.Interface(
fn=evaluate_resume,
inputs=[
gr.File(label="Upload Resume PDF"),
gr.Textbox(lines=10, label="Job Description")
],
outputs="text",
title="Resume Evaluator"
)
iface.launch()