xingxf03 commited on
Commit
5d45a78
1 Parent(s): 1563988

improve person job fit

Browse files
Files changed (1) hide show
  1. app.py +90 -6
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
- return ask_gpt(prompt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- fit_button = gr.Button(value="计算人岗匹配度", )
202
- fit_button.click(person_job_fit_gene, [text_output, jd], person_job_fit)
 
 
 
 
 
 
 
 
 
 
 
 
 
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], [person_job_fit], fn=person_job_fit_gene, )
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="能力雷达图")