Heyyaha commited on
Commit
3e2443e
·
verified ·
1 Parent(s): a9440db

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -19
app.py CHANGED
@@ -13,12 +13,14 @@ def build_ui():
13
  gr.Markdown("## 📝 JD 任务解析与解法选择 Demo")
14
 
15
  jd_text = gr.Textbox(label="职位描述 (JD)", placeholder="请输入职位描述文本,如‘负责销售数据分析与报告撰写’")
16
- task = gr.Textbox(label="提取的任务", interactive=False)
 
17
  solution_options = gr.CheckboxGroup(label="任务解法选项", choices=["选项1", "选项2", "选项3"], type="index")
18
  final_solution = gr.Textbox(label="您的最终解法", lines=3, placeholder="请提供您的解法")
19
  comment = gr.Textbox(label="📝 选择理由", lines=3, placeholder="为什么选择这个解法")
20
 
21
  generate_task = gr.Button("🔍 解析 JD 提取任务")
 
22
  submit = gr.Button("✅ 提交选择与解法(保存为RLHF数据)")
23
  feedback = gr.Textbox(label="系统反馈", interactive=False)
24
 
@@ -27,33 +29,35 @@ def build_ui():
27
  solution_state = gr.State([])
28
 
29
  def handle_jd_submit(jd_text):
30
- # JD 中提取任务
31
- message = f"""你是一个任务解析助手,请根据以下 JD 提取出相关的任务:
32
  JD: {jd_text}
33
- 请提取一个任务描述并用简洁明了的语言表达。"""
 
 
34
 
35
  response = taskgen_client.predict(message=message, api_name="/chat")
36
- task_match = re.search(r"负责(.*?)(、|。)", response) # 提取任务描述
 
 
 
 
37
  task = task_match.group(1).strip() if task_match else "任务解析失败"
 
 
 
38
 
39
- print(f"提取的任务:{task}") # 添加调试信息
40
-
41
- # 动态生成解法选项
42
  solution_message = f"""根据以下任务描述,生成三个解决方案选项:
43
- 任务:{task}
44
  请为该任务生成三个具体的解决方案,并列出其优缺点。"""
45
 
46
- # 调用模型生成解法选项
47
  solution_response = taskgen_client.predict(message=solution_message, api_name="/chat")
48
-
49
- print(f"模型返回的解法选项:{solution_response}") # 输出模型的响应,查看格式
50
-
51
- # 解析模型返回的解法选项(假设模型返回每个选项单独一行)
52
  solution_options = solution_response.split("\n") # 假设解法选项按行分开
53
-
54
- print(f"解析后的解法选项:{solution_options}") # 添加调试信息,查看解析结果
55
-
56
- return task, solution_options, jd_text, task, solution_options
57
 
58
  def handle_submit(selected_option, comment_text, final_solution_text):
59
  record = {
@@ -73,7 +77,8 @@ def build_ui():
73
  feedback_text = f"❌ 保存失败:{str(e)}"
74
  return feedback_text
75
 
76
- generate_task.click(fn=handle_jd_submit, inputs=[jd_text], outputs=[task, solution_options, jd_state, task_state, solution_state])
 
77
  submit.click(fn=handle_submit, inputs=[solution_options, comment, final_solution], outputs=[feedback])
78
 
79
  return demo
 
13
  gr.Markdown("## 📝 JD 任务解析与解法选择 Demo")
14
 
15
  jd_text = gr.Textbox(label="职位描述 (JD)", placeholder="请输入职位描述文本,如‘负责销售数据分析与报告撰写’")
16
+ task = gr.Textbox(label="提取的可测试任务", interactive=False)
17
+ testable_skills = gr.Textbox(label="可测试的硬技能", interactive=False)
18
  solution_options = gr.CheckboxGroup(label="任务解法选项", choices=["选项1", "选项2", "选项3"], type="index")
19
  final_solution = gr.Textbox(label="您的最终解法", lines=3, placeholder="请提供您的解法")
20
  comment = gr.Textbox(label="📝 选择理由", lines=3, placeholder="为什么选择这个解法")
21
 
22
  generate_task = gr.Button("🔍 解析 JD 提取任务")
23
+ generate_solution = gr.Button("🎨 生成解法选项")
24
  submit = gr.Button("✅ 提交选择与解法(保存为RLHF数据)")
25
  feedback = gr.Textbox(label="系统反馈", interactive=False)
26
 
 
29
  solution_state = gr.State([])
30
 
31
  def handle_jd_submit(jd_text):
32
+ # 步骤 1:解析任务,并生成具体的可测试任务
33
+ message = f"""你是一个任务解析助手,请根据以下 JD 提取出一个可以测试硬技能的任务,并具体列出需要的硬技能:
34
  JD: {jd_text}
35
+ 请提取出以下内容:
36
+ 1. 任务描述:可以通过具体操作测试的任务
37
+ 2. 硬技能:为测试该任务所需的硬技能(例如编程语言、工具、技术等)"""
38
 
39
  response = taskgen_client.predict(message=message, api_name="/chat")
40
+
41
+ # 任务描述和可测试硬技能的提取
42
+ task_match = re.search(r"任务描述[::](.*?)(、|。)", response)
43
+ skills_match = re.search(r"硬技能[::](.*?)(、|。)", response)
44
+
45
  task = task_match.group(1).strip() if task_match else "任务解析失败"
46
+ testable_skills = skills_match.group(1).strip() if skills_match else "无硬技能信息"
47
+
48
+ return task, testable_skills, jd_text, task, testable_skills
49
 
50
+ def handle_generate_solution(task):
51
+ # 步骤 2:生成解法选项
 
52
  solution_message = f"""根据以下任务描述,生成三个解决方案选项:
53
+ 任务描述:{task}
54
  请为该任务生成三个具体的解决方案,并列出其优缺点。"""
55
 
 
56
  solution_response = taskgen_client.predict(message=solution_message, api_name="/chat")
57
+
58
+ # 解析解法选项(假设模型返回每个选项单独一行)
 
 
59
  solution_options = solution_response.split("\n") # 假设解法选项按行分开
60
+ return solution_options
 
 
 
61
 
62
  def handle_submit(selected_option, comment_text, final_solution_text):
63
  record = {
 
77
  feedback_text = f"❌ 保存失败:{str(e)}"
78
  return feedback_text
79
 
80
+ generate_task.click(fn=handle_jd_submit, inputs=[jd_text], outputs=[task, testable_skills, jd_state, task_state])
81
+ generate_solution.click(fn=handle_generate_solution, inputs=[task], outputs=[solution_options])
82
  submit.click(fn=handle_submit, inputs=[solution_options, comment, final_solution], outputs=[feedback])
83
 
84
  return demo