Files changed (1) hide show
  1. app.py +65 -28
app.py CHANGED
@@ -3,45 +3,82 @@ import openai
3
  import os
4
  import fitz # PyMuPDF
5
 
6
- # Set OpenAI API key
7
- api_key = "sk-1E6ExsyFb-cdU8jPNDP1dsEq_ra_bazU-EXQZQ86pJT3BlbkFJ4zURsV0t--3qNM7A-P57NUqZIBosrL7POwzpjR5EQA"
 
 
 
8
 
9
  openai.api_key = api_key
10
 
11
  def extract_text_from_pdf(pdf_file):
12
- # Open the PDF file
13
- document = fitz.open(pdf_file)
14
- text = ""
15
- # Extract text from each page
16
- for page_num in range(len(document)):
17
- page = document.load_page(page_num)
18
- text += page.get_text()
19
- return text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  def evaluate_resume(pdf_file, job_description):
 
 
 
 
 
 
22
  # Extract text from PDF
23
  resume_text = extract_text_from_pdf(pdf_file)
24
-
25
- prompt = f"""به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه در برابر شرح شغل است.
26
- هدف شما تجزیه و تحلیل رزومه بر اساس شرح شغل داده شده است،
27
- یک درصد تطابق را بر اساس معیارهای کلیدی در رزومه فرد و شرح شغل ذکر شده را به دقت تعیین کنید و تعداد کلمات کلیدی گمشده را مشخص کنید.
28
- رزومه:{resume_text}
29
- شرح شغل:{job_description}
30
- من پاسخ را در یک رشته با ساختار زیر می خواهم
31
 
 
 
 
 
 
 
 
 
 
 
32
  {{"تطابق شرح شغل با رزومه فرد ":"%"، "تعداد کلمات کلیدی غیر منطبق ":""، "تعداد کلمات کلیدی منطبق ":" }}
33
  """
34
 
35
- response = openai.ChatCompletion.create(
36
- model="gpt-4o",
37
- messages=[
38
- {"role": "system", "content": "You are a helpful assistant."},
39
- {"role": "user", "content": prompt}
40
- ],
41
- temperature=0
42
- )
43
-
44
- return response.choices[0].message['content']
 
 
45
 
46
  iface = gr.Interface(
47
  fn=evaluate_resume,
@@ -53,4 +90,4 @@ iface = gr.Interface(
53
  title="Resume Evaluator"
54
  )
55
 
56
- iface.launch()
 
3
  import os
4
  import fitz # PyMuPDF
5
 
6
+ # Set OpenAI API key from environment variable
7
+ api_key = os.getenv("OPENAI_API_KEY")
8
+
9
+ if not api_key:
10
+ raise ValueError("OpenAI API key not found. Please set it in the environment variables.")
11
 
12
  openai.api_key = api_key
13
 
14
  def extract_text_from_pdf(pdf_file):
15
+ try:
16
+ # Open the PDF file
17
+ document = fitz.open(pdf_file.name)
18
+ text = ""
19
+ # Extract text from each page
20
+ for page_num in range(len(document)):
21
+ page = document.load_page(page_num)
22
+ text += page.get_text()
23
+ return text
24
+ except Exception as e:
25
+ return f"Error extracting text from PDF: {e}"
26
+
27
+ def extract_keywords(job_description):
28
+ prompt = f"""به عنوان یک تحلیلگر حرفه‌ای، لطفا مهم‌ترین کلمات کلیدی را از شرح شغل زیر استخراج کنید:
29
+ شرح شغل: {job_description}
30
+ پاسخ را به صورت یک لیست از کلمات کلیدی ارائه دهید.
31
+ """
32
+
33
+ try:
34
+ response = openai.ChatCompletion.create(
35
+ model="gpt-4",
36
+ messages=[
37
+ {"role": "system", "content": "You are a helpful assistant."},
38
+ {"role": "user", "content": prompt}
39
+ ],
40
+ temperature=0
41
+ )
42
+ keywords = response.choices[0].message['content']
43
+ return keywords
44
+ except Exception as e:
45
+ return f"Error during keyword extraction: {e}"
46
 
47
  def evaluate_resume(pdf_file, job_description):
48
+ # Extract keywords from job description
49
+ keywords = extract_keywords(job_description)
50
+
51
+ if "Error" in keywords:
52
+ return keywords
53
+
54
  # Extract text from PDF
55
  resume_text = extract_text_from_pdf(pdf_file)
 
 
 
 
 
 
 
56
 
57
+ if "Error" in resume_text:
58
+ return resume_text
59
+
60
+ prompt = f"""به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه در برابر شرح شغل و کلمات کلیدی استخراج شده است.
61
+ لطفاً رزومه فرد را با کلمات کلیدی زیر مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق را محاسبه کنید.
62
+
63
+ کلمات کلیدی: {keywords}
64
+ رزومه: {resume_text}
65
+
66
+ من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
67
  {{"تطابق شرح شغل با رزومه فرد ":"%"، "تعداد کلمات کلیدی غیر منطبق ":""، "تعداد کلمات کلیدی منطبق ":" }}
68
  """
69
 
70
+ try:
71
+ response = openai.ChatCompletion.create(
72
+ model="gpt-4",
73
+ messages=[
74
+ {"role": "system", "content": "You are a helpful assistant."},
75
+ {"role": "user", "content": prompt}
76
+ ],
77
+ temperature=0
78
+ )
79
+ return response.choices[0].message['content']
80
+ except Exception as e:
81
+ return f"Error during resume evaluation: {e}"
82
 
83
  iface = gr.Interface(
84
  fn=evaluate_resume,
 
90
  title="Resume Evaluator"
91
  )
92
 
93
+ iface.launch()