Heyyaha commited on
Commit
fbda32a
·
verified ·
1 Parent(s): a26d18f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -23
app.py CHANGED
@@ -12,27 +12,32 @@ taskgen_client = Client("tencent/Hunyuan-Large")
12
  OUTPUT_DIR = "outputs"
13
  os.makedirs(OUTPUT_DIR, exist_ok=True)
14
 
15
- # 拆解 JD 成任务,并生成三个解决方案(增强容错)
16
- def generate_solutions_from_jd(jd):
17
- message = f"""你是一个岗位分析助手,请根据以下JD内容:\n
18
- 1. 首先识别一个可以用来测试岗位候选人核心能力的具体任务;
19
- 2. 然后为这个任务生成三个不同的解决方案建议。
20
-
21
- 请严格以如下格式输出:
22
- 任务:(任务描述)\n方案1:(内容)\n方案2:(内容)\n方案3:(内容)\n
23
- JD: {jd}
24
- """
25
- response = taskgen_client.predict(message=message, api_name="/chat")
26
 
 
 
27
  task_match = re.search(r"任务[::](.*)", response)
28
- solutions = re.findall(r"方案[123][::](.*)", response)
29
 
30
- task = task_match.group(1).strip() if task_match else "任务解析失败"
 
 
 
 
 
 
 
 
 
 
31
  s1 = solutions[0].strip() if len(solutions) > 0 else "方案1解析失败"
32
  s2 = solutions[1].strip() if len(solutions) > 1 else "方案2解析失败"
33
  s3 = solutions[2].strip() if len(solutions) > 2 else "方案3解析失败"
34
-
35
- return task, s1, s2, s3
36
 
37
  # 构建 Gradio UI
38
  def build_ui():
@@ -41,9 +46,9 @@ def build_ui():
41
 
42
  jd_input = gr.Textbox(label="输入 JD", placeholder="请输入岗位描述 JD")
43
  task_output = gr.Textbox(label="拆解出的测试任务", interactive=False)
 
44
 
45
- generate_button = gr.Button("🚀 拆解任务并生成方案")
46
-
47
  sol1 = gr.Textbox(label="方案1", interactive=False)
48
  sol2 = gr.Textbox(label="方案2", interactive=False)
49
  sol3 = gr.Textbox(label="方案3", interactive=False)
@@ -57,9 +62,13 @@ def build_ui():
57
 
58
  task_state = gr.State()
59
 
60
- def handle_jd_input(jd_text):
61
- task, s1, s2, s3 = generate_solutions_from_jd(jd_text)
62
- return task, s1, s2, s3, task
 
 
 
 
63
 
64
  def handle_submit(selected_idx, user_input_text, comment_text, task_text):
65
  record = {
@@ -77,12 +86,12 @@ def build_ui():
77
  except Exception as e:
78
  return f"❌ 保存失败:{str(e)}"
79
 
80
- generate_button.click(fn=handle_jd_input, inputs=[jd_input], outputs=[task_output, sol1, sol2, sol3, task_state])
 
81
  submit.click(fn=handle_submit, inputs=[select_radio, user_solution, comment, task_state], outputs=[feedback])
82
 
83
  return demo
84
 
85
  if __name__ == "__main__":
86
  demo = build_ui()
87
- demo.launch()
88
-
 
12
  OUTPUT_DIR = "outputs"
13
  os.makedirs(OUTPUT_DIR, exist_ok=True)
14
 
15
+ # 拆解 JD 成任务
16
+ def extract_task_from_jd(jd):
17
+ message = f"""你是一个岗位分析助手,请根据以下JD内容提取一个可以用来测试候选人核心能力的具体任务。
18
+ 请以如下格式回复:
19
+ 任务:(任务描述)
 
 
 
 
 
 
20
 
21
+ JD: {jd}"""
22
+ response = taskgen_client.predict(message=message, api_name="/chat")
23
  task_match = re.search(r"任务[::](.*)", response)
24
+ return task_match.group(1).strip() if task_match else "任务解析失败"
25
 
26
+ # 基于任务生成三个解决方案
27
+ def generate_solutions_from_task(task):
28
+ message = f"""你是一个解决方案生成助手,请根据以下任务设计三种不同的实现思路。
29
+ 请严格按如下格式输出:
30
+ 方案1:(内容)
31
+ 方案2:(内容)
32
+ 方案3:(内容)
33
+
34
+ 任务: {task}"""
35
+ response = taskgen_client.predict(message=message, api_name="/chat")
36
+ solutions = re.findall(r"方案[123][::](.*)", response)
37
  s1 = solutions[0].strip() if len(solutions) > 0 else "方案1解析失败"
38
  s2 = solutions[1].strip() if len(solutions) > 1 else "方案2解析失败"
39
  s3 = solutions[2].strip() if len(solutions) > 2 else "方案3解析失败"
40
+ return s1, s2, s3
 
41
 
42
  # 构建 Gradio UI
43
  def build_ui():
 
46
 
47
  jd_input = gr.Textbox(label="输入 JD", placeholder="请输入岗位描述 JD")
48
  task_output = gr.Textbox(label="拆解出的测试任务", interactive=False)
49
+ generate_task_btn = gr.Button("🧠 拆解 JD 成任务")
50
 
51
+ generate_solutions_btn = gr.Button("🚀 基于任务生成三个方案")
 
52
  sol1 = gr.Textbox(label="方案1", interactive=False)
53
  sol2 = gr.Textbox(label="方案2", interactive=False)
54
  sol3 = gr.Textbox(label="方案3", interactive=False)
 
62
 
63
  task_state = gr.State()
64
 
65
+ def handle_task_gen(jd_text):
66
+ task = extract_task_from_jd(jd_text)
67
+ return task, task
68
+
69
+ def handle_solutions_gen(task_text):
70
+ s1, s2, s3 = generate_solutions_from_task(task_text)
71
+ return s1, s2, s3
72
 
73
  def handle_submit(selected_idx, user_input_text, comment_text, task_text):
74
  record = {
 
86
  except Exception as e:
87
  return f"❌ 保存失败:{str(e)}"
88
 
89
+ generate_task_btn.click(fn=handle_task_gen, inputs=[jd_input], outputs=[task_output, task_state])
90
+ generate_solutions_btn.click(fn=handle_solutions_gen, inputs=[task_state], outputs=[sol1, sol2, sol3])
91
  submit.click(fn=handle_submit, inputs=[select_radio, user_solution, comment, task_state], outputs=[feedback])
92
 
93
  return demo
94
 
95
  if __name__ == "__main__":
96
  demo = build_ui()
97
+ demo.launch()