Fariddvp commited on
Commit
2427f9f
·
verified ·
1 Parent(s): ab717b1

Update models.py

Browse files
Files changed (1) hide show
  1. models.py +92 -92
models.py CHANGED
@@ -10,8 +10,8 @@ import transformers
10
  hf_api_key = os.getenv("HF_API_KEY")
11
  login(token=hf_api_key)
12
 
13
- # Set OpenAI and Hugging Face API keys
14
- # openai.api_key = os.getenv('API_KEY_OpenAI')
15
 
16
  def extract_text_from_pdf(pdf_file):
17
  document = fitz.open(pdf_file)
@@ -21,110 +21,110 @@ def extract_text_from_pdf(pdf_file):
21
  text += page.get_text()
22
  return text
23
 
24
- # # Initialize the Gemma model
25
- # gemma_pipe = pipeline(
26
- # "text-generation",
27
- # model="google/gemma-2-2b-it",
28
- # model_kwargs={"torch_dtype": torch.bfloat16},
29
- # device="cpu"
30
- # )
31
 
32
- # # Initialize the Bloom model
33
- # bloom_model = BloomForCausalLM.from_pretrained("bigscience/bloom-560m")
34
- # bloom_tokenizer = BloomTokenizerFast.from_pretrained("bigscience/bloom-560m")
35
 
36
 
37
 
38
- # def evaluate_with_gpt(pdf_file, job_description):
39
- # resume_text = extract_text_from_pdf(pdf_file)
40
 
41
- # keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
42
 
43
- # prompt = f"""
44
 
45
- # به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
46
 
47
- # شرح شغل: {job_description}
48
- # رزومه: {resume_text}
49
 
50
- # من پاسخ را در یک فایل json می‌خواهم
51
- # """
52
 
53
- # try:
54
- # response = openai.ChatCompletion.create(
55
- # model="gpt-4o",
56
- # messages=[
57
- # {"role": "system", "content": "You are a helpful assistant."},
58
- # {"role": "user", "content": prompt}
59
- # ],
60
- # temperature=0
61
- # )
62
- # return response.choices[0].message['content']
63
- # except Exception as e:
64
- # return f"Error during resume evaluation: {e}"
65
-
66
- # def evaluate_with_gemma(pdf_file, job_description):
67
- # resume_text = extract_text_from_pdf(pdf_file)
68
 
69
- # keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
70
 
71
- # prompt = f"""
72
 
73
- # به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
74
 
75
- # شرح شغل: {job_description}
76
- # رزومه: {resume_text}
77
 
78
- # من پاسخ را در یک فایل json می‌خواهم
79
- # """
80
 
81
- # outputs = gemma_pipe(prompt, max_new_tokens=256)
82
- # return outputs[0]["generated_text"].strip()
83
 
84
- # def evaluate_with_bloom(pdf_file, job_description):
85
- # resume_text = extract_text_from_pdf(pdf_file)
86
 
87
- # keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
88
 
89
- # prompt = f"""
90
- # به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه نسبت به شرح شغل و کلمات کلیدی مشخصی است.
91
- # لطفاً رزومه فرد را با در نظر گرفتن کلمات کلیدی تعیین شده مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق محاسبه کنید.
92
 
93
- # ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
94
- # شرح شغل: {job_description}
95
- # رزومه: {resume_text}"""
96
 
97
- # inputs = bloom_tokenizer(prompt, return_tensors="pt")
98
- # outputs = bloom_model.generate(inputs["input_ids"], max_length=2000)
99
- # return bloom_tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
100
 
101
- # def evaluate_with_jabir(pdf_file, job_description):
102
- # resume_text = extract_text_from_pdf(pdf_file)
103
 
104
- # keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
105
 
106
- # prompt = f"""
107
 
108
- # به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
109
 
110
- # شرح شغل: {job_description}
111
- # رزومه: {resume_text}
112
 
113
- # من پاسخ را در یک فایل json می‌خواهم
114
- # """
115
 
116
- # base_url = "https://api.jabirproject.org/generate"
117
- # headers = {"apikey": "7471142a-deb4-4a70-8ee3-6603e21bcc1d"}
118
- # data = {
119
- # "messages": [{"role": "user", "content": prompt}]
120
- # }
121
 
122
- # response = requests.post(base_url, headers=headers, json=data)
123
 
124
- # if response.ok:
125
- # return response.json()
126
- # else:
127
- # return f"Error: {response.status_code}, {response.text}"
128
 
129
 
130
  hf_api_key = os.getenv("HF_API_KEY1")
@@ -145,23 +145,23 @@ pipeline = transformers.pipeline(
145
  device_map="auto",
146
  )
147
 
148
- def evaluate_with_llama(resume_text, job_description):
149
- keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
150
 
151
- prompt = f"""
152
- به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه نسبت به شرح شغل و کلمات کلیدی مشخصی است.
153
- لطفاً رزومه فرد را با در نظر گرفتن کلمات کلیدی تعیین شده مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق محاسبه کنید.
154
 
155
- ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
156
- شرح شغل: {job_description}
157
- رزومه: {resume_text}
158
 
159
- من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
160
- {{"تطابق شرح شغل با رزومه فرد ":"%", "تعداد کلمات کلیدی غیر منطبق ":"", "تعداد کلمات کلیدی منطبق ":""}}
161
- """
162
 
163
- outputs = pipeline(
164
- prompt,
165
- max_new_tokens=256,
166
- )
167
- return outputs[0]["generated_text"]
 
10
  hf_api_key = os.getenv("HF_API_KEY")
11
  login(token=hf_api_key)
12
 
13
+ Set OpenAI and Hugging Face API keys
14
+ openai.api_key = os.getenv('API_KEY_OpenAI')
15
 
16
  def extract_text_from_pdf(pdf_file):
17
  document = fitz.open(pdf_file)
 
21
  text += page.get_text()
22
  return text
23
 
24
+ # Initialize the Gemma model
25
+ gemma_pipe = pipeline(
26
+ "text-generation",
27
+ model="google/gemma-2-2b-it",
28
+ model_kwargs={"torch_dtype": torch.bfloat16},
29
+ device="cpu"
30
+ )
31
 
32
+ # Initialize the Bloom model
33
+ bloom_model = BloomForCausalLM.from_pretrained("bigscience/bloom-560m")
34
+ bloom_tokenizer = BloomTokenizerFast.from_pretrained("bigscience/bloom-560m")
35
 
36
 
37
 
38
+ def evaluate_with_gpt(pdf_file, job_description):
39
+ resume_text = extract_text_from_pdf(pdf_file)
40
 
41
+ keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
42
 
43
+ prompt = f"""
44
 
45
+ به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
46
 
47
+ شرح شغل: {job_description}
48
+ رزومه: {resume_text}
49
 
50
+ من پاسخ را در یک فایل json می‌خواهم
51
+ """
52
 
53
+ try:
54
+ response = openai.ChatCompletion.create(
55
+ model="gpt-4o",
56
+ messages=[
57
+ {"role": "system", "content": "You are a helpful assistant."},
58
+ {"role": "user", "content": prompt}
59
+ ],
60
+ temperature=0
61
+ )
62
+ return response.choices[0].message['content']
63
+ except Exception as e:
64
+ return f"Error during resume evaluation: {e}"
65
+
66
+ def evaluate_with_gemma(pdf_file, job_description):
67
+ resume_text = extract_text_from_pdf(pdf_file)
68
 
69
+ keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
70
 
71
+ prompt = f"""
72
 
73
+ به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
74
 
75
+ شرح شغل: {job_description}
76
+ رزومه: {resume_text}
77
 
78
+ من پاسخ را در یک فایل json می‌خواهم
79
+ """
80
 
81
+ outputs = gemma_pipe(prompt, max_new_tokens=256)
82
+ return outputs[0]["generated_text"].strip()
83
 
84
+ def evaluate_with_bloom(pdf_file, job_description):
85
+ resume_text = extract_text_from_pdf(pdf_file)
86
 
87
+ keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
88
 
89
+ prompt = f"""
90
+ به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه نسبت به شرح شغل و کلمات کلیدی مشخصی است.
91
+ لطفاً رزومه فرد را با در نظر گرفتن کلمات کلیدی تعیین شده مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق محاسبه کنید.
92
 
93
+ ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
94
+ شرح شغل: {job_description}
95
+ رزومه: {resume_text}"""
96
 
97
+ inputs = bloom_tokenizer(prompt, return_tensors="pt")
98
+ outputs = bloom_model.generate(inputs["input_ids"], max_length=2000)
99
+ return bloom_tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
100
 
101
+ def evaluate_with_jabir(pdf_file, job_description):
102
+ resume_text = extract_text_from_pdf(pdf_file)
103
 
104
+ keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
105
 
106
+ prompt = f"""
107
 
108
+ به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، اطلاعات کلیدی رزومه و شرح شغل را به صورت جداگانه استخراج کن. این اطلاعات شامل مواردی است که در {keywords} آمده است.
109
 
110
+ شرح شغل: {job_description}
111
+ رزومه: {resume_text}
112
 
113
+ من پاسخ را در یک فایل json می‌خواهم
114
+ """
115
 
116
+ base_url = "https://api.jabirproject.org/generate"
117
+ headers = {"apikey": "7471142a-deb4-4a70-8ee3-6603e21bcc1d"}
118
+ data = {
119
+ "messages": [{"role": "user", "content": prompt}]
120
+ }
121
 
122
+ response = requests.post(base_url, headers=headers, json=data)
123
 
124
+ if response.ok:
125
+ return response.json()
126
+ else:
127
+ return f"Error: {response.status_code}, {response.text}"
128
 
129
 
130
  hf_api_key = os.getenv("HF_API_KEY1")
 
145
  device_map="auto",
146
  )
147
 
148
+ # def evaluate_with_llama(resume_text, job_description):
149
+ # keywords = "وضعیت خدمت سربازی، سن، محل سکونت، محدوده حقوق پرداختی، میزان سابقه کار مدیریتی، میزان سابقه کار مرتبط با گروه شغلی مشابه، میزان سابقه کار در صنعت، میزان تحصیلات، مهارت زبان، مهارت های نرم افزاری"
150
 
151
+ # prompt = f"""
152
+ # به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه نسبت به شرح شغل و کلمات کلیدی مشخصی است.
153
+ # لطفاً رزومه فرد را با در نظر گرفتن کلمات کلیدی تعیین شده مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق محاسبه کنید.
154
 
155
+ # ارزیابی را بر اساس دقیقا این کلمات کلیدی {keywords} محاسبه کن.
156
+ # شرح شغل: {job_description}
157
+ # رزومه: {resume_text}
158
 
159
+ # من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
160
+ # {{"تطابق شرح شغل با رزومه فرد ":"%", "تعداد کلمات کلیدی غیر منطبق ":"", "تعداد کلمات کلیدی منطبق ":""}}
161
+ # """
162
 
163
+ # outputs = pipeline(
164
+ # prompt,
165
+ # max_new_tokens=256,
166
+ # )
167
+ # return outputs[0]["generated_text"]