Spaces:
Sleeping
Sleeping
import gradio as gr | |
import openai | |
import os | |
import fitz # PyMuPDF | |
openai.api_key = "sk-1E6ExsyFb-cdU8jPNDP1dsEq_ra_bazU-EXQZQ86pJT3BlbkFJ4zURsV0t--3qNM7A-P57NUqZIBosrL7POwzpjR5EQA" | |
# Set OpenAI API key from environment variable | |
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-4o", | |
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-4o", | |
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() | |