Files changed (1) hide show
  1. app.py +33 -9
app.py CHANGED
@@ -4,7 +4,7 @@ import fitz # PyMuPDF
4
  import torch
5
  from transformers import pipeline, BloomForCausalLM, BloomTokenizerFast
6
  from huggingface_hub import login
7
-
8
  import os
9
 
10
  hf_api_key = os.getenv("HF_API_KEY")
@@ -94,28 +94,52 @@ def evaluate_with_bloom(pdf_file, job_description):
94
 
95
  ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
96
  شرح شغل: {job_description}
97
- رزومه: {resume_text}
98
-
99
- من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
100
- {{"تطابق شرح شغل با رزومه فرد ":"%"، "تعداد کلمات کلیدی غیر منطبق ":""، "تعداد کلمات کلیدی منطبق ":""}}
101
- """
102
 
103
  inputs = bloom_tokenizer(prompt, return_tensors="pt")
104
  outputs = bloom_model.generate(inputs["input_ids"], max_length=2000)
105
  return bloom_tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  def evaluate_all_models(pdf_file, job_description):
108
  gpt_result = evaluate_with_gpt(pdf_file, job_description)
109
  gemma_result = evaluate_with_gemma(pdf_file, job_description)
110
  bloom_result = evaluate_with_bloom(pdf_file, job_description)
111
- return f"GPT-4o Result:\n{gpt_result}\n\nGemma Result:\n{gemma_result}\n\nBloom Result:\n{bloom_result}"
 
112
 
113
  iface = gr.Interface(
114
- fn=lambda pdf, jd, model: evaluate_with_gpt(pdf, jd) if model == "GPT-4o" else evaluate_with_gemma(pdf, jd) if model == "Gemma" else evaluate_with_bloom(pdf, jd) if model == "Bloom" else evaluate_all_models(pdf, jd),
115
  inputs=[
116
  gr.File(label="Upload Resume PDF"),
117
  gr.Textbox(lines=10, label="Job Description"),
118
- gr.Radio(choices=["GPT-4o", "Gemma", "Bloom", "All"], label="Choose Model")
119
  ],
120
  outputs="text",
121
  title="Resume Evaluator"
 
4
  import torch
5
  from transformers import pipeline, BloomForCausalLM, BloomTokenizerFast
6
  from huggingface_hub import login
7
+ import requests
8
  import os
9
 
10
  hf_api_key = os.getenv("HF_API_KEY")
 
94
 
95
  ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
96
  شرح شغل: {job_description}
97
+ رزومه: {resume_text}"""
 
 
 
 
98
 
99
  inputs = bloom_tokenizer(prompt, return_tensors="pt")
100
  outputs = bloom_model.generate(inputs["input_ids"], max_length=2000)
101
  return bloom_tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
102
 
103
+ def evaluate_with_jabir(pdf_file, job_description):
104
+ resume_text = extract_text_from_pdf(pdf_file)
105
+
106
+ keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت
107
+ ، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
108
+
109
+ prompt = f"""
110
+ به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه نسبت به شرح شغل و کلمات کلیدی مشخصی است.
111
+ لطفاً رزومه فرد را با در نظر گرفتن کلمات کلیدی تعیین شده مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق محاسبه کنید.
112
+
113
+ ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
114
+ شرح شغل: {job_description}
115
+ رزومه: {resume_text}"""
116
+
117
+ base_url = "https://api.jabirproject.org/generate"
118
+ headers = {"apikey": "7471142a-deb4-4a70-8ee3-6603e21bcc1d"}
119
+ data = {
120
+ "messages": [{"role": "user", "content": prompt}]
121
+ }
122
+
123
+ response = requests.post(base_url, headers=headers, json=data)
124
+
125
+ if response.ok:
126
+ return response.json()
127
+ else:
128
+ return f"Error: {response.status_code}, {response.text}"
129
+
130
  def evaluate_all_models(pdf_file, job_description):
131
  gpt_result = evaluate_with_gpt(pdf_file, job_description)
132
  gemma_result = evaluate_with_gemma(pdf_file, job_description)
133
  bloom_result = evaluate_with_bloom(pdf_file, job_description)
134
+ new_model_result = evaluate_with_jabir(pdf_file, job_description)
135
+ return f"GPT-4o Result:\n{gpt_result}\n\nGemma Result:\n{gemma_result}\n\nBloom Result:\n{bloom_result}\n\njabir Result:\n{new_model_result}"
136
 
137
  iface = gr.Interface(
138
+ fn=lambda pdf, jd, model: evaluate_with_gpt(pdf, jd) if model == "GPT-4o" else evaluate_with_gemma(pdf, jd) if model == "Gemma" else evaluate_with_bloom(pdf, jd) if model == "Bloom" else evaluate_with_jabir(pdf, jd) if model == "jabir" else evaluate_all_models(pdf, jd),
139
  inputs=[
140
  gr.File(label="Upload Resume PDF"),
141
  gr.Textbox(lines=10, label="Job Description"),
142
+ gr.Radio(choices=["GPT-4o", "Gemma", "Bloom", "jabir", "All"], label="Choose Model")
143
  ],
144
  outputs="text",
145
  title="Resume Evaluator"