Spaces:
Sleeping
Sleeping
xingxf03
commited on
Commit
•
5d45a78
1
Parent(s):
1563988
improve person job fit
Browse files
app.py
CHANGED
@@ -59,8 +59,79 @@ def generate_talent_portrait(resume):
|
|
59 |
|
60 |
# 人岗匹配度
|
61 |
def person_job_fit_gene(resume, jd):
|
62 |
-
prompt = f"你现在是HR招聘专家,某职位要求是:{{{jd}}}\n某候选人简历如下:{{{resume}}}" + "。岗位与候选人之间的匹配度可以用0-1之间的数字表示,0表示完全不匹配,1表示完全匹配。请你评估应聘岗位与候选人的匹配度,并给出理由。"
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
65 |
|
66 |
# interview_questions
|
@@ -197,9 +268,22 @@ with gr.Blocks(title="HRMaster", theme="soft") as demo:
|
|
197 |
jd_row = gr.Row(visible=False)
|
198 |
with jd_row:
|
199 |
jd = gr.Textbox(label="岗位JD")
|
200 |
-
person_job_fit = gr.Textbox(label="人岗匹配度")
|
201 |
-
|
202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
test_jd = '''
|
204 |
职位名称:Java开发工程师工作职责:
|
205 |
1. 根据业务需求,参与需求分析、系统设计和架构设计。
|
@@ -218,7 +302,7 @@ with gr.Blocks(title="HRMaster", theme="soft") as demo:
|
|
218 |
6. 具备良好的问题解决能力和学习能力,能够快速地理解和解决技术问题。
|
219 |
7. 具备良好的代码风格和规范意识,注重代码质量和可维护性。
|
220 |
'''
|
221 |
-
gr.Examples([test_jd], [jd]
|
222 |
radar_row = gr.Row(visible=False)
|
223 |
with radar_row:
|
224 |
radar_outputs = gr.Plot(label="能力雷达图")
|
|
|
59 |
|
60 |
# 人岗匹配度
|
61 |
def person_job_fit_gene(resume, jd):
|
62 |
+
# prompt = f"你现在是HR招聘专家,某职位要求是:{{{jd}}}\n某候选人简历如下:{{{get_talent_outline(resume)}}}" + "。岗位与候选人之间的匹配度可以用0-1之间的数字表示,0表示完全不匹配,1表示完全匹配。请你评估应聘岗位与候选人的匹配度,并给出理由。"
|
63 |
+
prompt = '''你现在是HR招聘专家,某职位要求是:
|
64 |
+
{}
|
65 |
+
某候选人简历信息如下:{}。
|
66 |
+
针对候选人的简历与职位要求进行匹配度评估,采取以下规则:1. 教育背景匹配度评估:
|
67 |
+
- 完全匹配:候选人的教育背景与职位要求完全符合。
|
68 |
+
- 较为匹配:候选人的教育背景与职位要求有一定的相关性,但不完全符合。
|
69 |
+
- 较不匹配:候选人的教育背景与职位要求有一些不相关的情况。
|
70 |
+
- 完全不匹配:候选人的教育背景与职位要求完全不符合。
|
71 |
+
|
72 |
+
2. 工作经验匹配度评估:
|
73 |
+
- 完全匹配:候选人的工作经验与职位要求完全符合。
|
74 |
+
- 较为匹配:候选人的工作经验与职位要求具备相应的技能和经验,但可能缺少某些方面的经验。
|
75 |
+
- 较不匹配:候选人的工作经验与职位要求相差较大,缺乏相关的技能和经验。
|
76 |
+
- 完全不匹配:候选人的工作经验与职位要求完全不符合。
|
77 |
+
|
78 |
+
3. 技能与能力匹配度评估:
|
79 |
+
- 完全匹配:候选人具备职位要求的所有必备技能和能力。
|
80 |
+
- 较为匹配:候选人具备部分职位要求的技能和能力,但可能缺少某些方面的能力。
|
81 |
+
- 较不匹配:候选人缺乏职位要求的关键技能和能力。
|
82 |
+
- 完全不匹配:候选人的技能和能力与职位要求完全不符合。
|
83 |
+
|
84 |
+
4. 其他因素综合考虑:
|
85 |
+
- 完全匹配:候选人除了教育背景、工作经验和技能与能力外,还具备其他与职位要求相关的因素,如培训经历、认证证书等。
|
86 |
+
- 较为匹配:候选人除了教育背景、工作经验和技能与能力外,可能还具备一些与职位要求相关的因素。
|
87 |
+
- 较不匹配:候选人缺乏与职位要求相关的其他因素。
|
88 |
+
- 完全不匹配:候选人的其他因素与职位要求完全不符合。
|
89 |
+
|
90 |
+
5. 整体的人岗匹配度:
|
91 |
+
综合考量候选人的教育背景、工作经验、技能与能力以及其他因素得到整体的岗位匹配度。
|
92 |
+
根据以上规则,对简历与职位要求之间的匹配度进行评估,并划分为完全匹配、较为匹配、较不匹配和完全不匹配四个档次。
|
93 |
+
评估结果请以json格式返回给我,下面是返回结果的示例:
|
94 |
+
{
|
95 |
+
"教育背景匹配度":{
|
96 |
+
"结果":"",
|
97 |
+
"评估说明":""
|
98 |
+
},
|
99 |
+
"工作经验匹配度":{
|
100 |
+
"结果":"",
|
101 |
+
"评估说明":""
|
102 |
+
},
|
103 |
+
"技能与能力匹配度":{
|
104 |
+
"结果":"",
|
105 |
+
"评估说明":""
|
106 |
+
},
|
107 |
+
"其他因素匹配度":{
|
108 |
+
"结果":"",
|
109 |
+
"评估说明":""
|
110 |
+
},
|
111 |
+
"整体匹配度":{
|
112 |
+
"结果":"",
|
113 |
+
"评估说明":""
|
114 |
+
}
|
115 |
+
}
|
116 |
+
'''.format(jd, resume)
|
117 |
+
data = json.loads(ask_gpt(prompt))
|
118 |
+
edu_matching = data['教育背景匹配度']['结果']
|
119 |
+
edu_description = data['教育背景匹配度']['评估说明']
|
120 |
+
|
121 |
+
work_exp_matching = data['工作经验匹配度']['结果']
|
122 |
+
work_exp_description = data['工作经验匹配度']['评估说明']
|
123 |
+
|
124 |
+
skill_matching = data['技能与能力匹配度']['结果']
|
125 |
+
skill_description = data['技能与能力匹配度']['评估说明']
|
126 |
+
|
127 |
+
other_matching = data['其他因素匹配度']['结果']
|
128 |
+
other_description = data['其他因素匹配度']['评估说明']
|
129 |
+
|
130 |
+
overall_matching = data['整体匹配度']['结果']
|
131 |
+
overall_description = data['整体匹配度']['评估说明']
|
132 |
+
return gr.update(value=edu_matching), gr.update(value=work_exp_matching, ), gr.update(
|
133 |
+
value=skill_matching, ), gr.update(value=other_matching, ), gr.update(
|
134 |
+
value=overall_matching, ), edu_description, work_exp_description, skill_description, other_description, overall_description
|
135 |
|
136 |
|
137 |
# interview_questions
|
|
|
268 |
jd_row = gr.Row(visible=False)
|
269 |
with jd_row:
|
270 |
jd = gr.Textbox(label="岗位JD")
|
271 |
+
# person_job_fit = gr.Textbox(label="人岗匹配度")
|
272 |
+
edu_matching = gr.CheckboxGroup(["完全匹配", "较为匹配", "较不匹配", "完全不匹配"], label="教育背景匹配度", info="")
|
273 |
+
edu_description = gr.Textbox(label="评估说明")
|
274 |
+
work_exp_matching = gr.CheckboxGroup(["完全匹配", "较为匹配", "较不匹配", "完全不匹配"], label="工作经验匹配度", info="")
|
275 |
+
work_exp_description = gr.Textbox(label="评估说明")
|
276 |
+
skill_matching = gr.CheckboxGroup(["完全匹配", "较为匹配", "较不匹配", "完全不匹配"], label="技能与能力匹配度", info="")
|
277 |
+
skill_description = gr.Textbox(label="评估说明")
|
278 |
+
other_matching = gr.CheckboxGroup(["完全匹配", "较为匹配", "较不匹配", "完全不匹配"], label="其他因素匹配度", info="")
|
279 |
+
other_description = gr.Textbox(label="评估说明")
|
280 |
+
overall_matching = gr.CheckboxGroup(["完全匹配", "较为匹配", "较不匹配", "完全不匹配"], label="整体匹配度", info="")
|
281 |
+
overall_description = gr.Textbox(label="评估说明")
|
282 |
+
fit_button = gr.Button(value="计算人岗匹配度",)
|
283 |
+
fit_button.click(person_job_fit_gene, [text_output, jd],
|
284 |
+
[edu_matching, work_exp_matching, skill_matching, other_matching, overall_matching,
|
285 |
+
edu_description, work_exp_description, skill_description, other_description,
|
286 |
+
overall_description])
|
287 |
test_jd = '''
|
288 |
职位名称:Java开发工程师工作职责:
|
289 |
1. 根据业务需求,参与需求分析、系统设计和架构设计。
|
|
|
302 |
6. 具备良好的问题解决能力和学习能力,能够快速地理解和解决技术问题。
|
303 |
7. 具备良好的代码风格和规范意识,注重代码质量和可维护性。
|
304 |
'''
|
305 |
+
gr.Examples([test_jd], [jd])
|
306 |
radar_row = gr.Row(visible=False)
|
307 |
with radar_row:
|
308 |
radar_outputs = gr.Plot(label="能力雷达图")
|