Spaces:
Runtime error
Runtime error
File size: 4,028 Bytes
5b0d392 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 421ff3c 12a01f5 b7426d5 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 5b0d392 421ff3c 12a01f5 421ff3c 12a01f5 421ff3c 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 a2442ba 12a01f5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
import os
import gradio as gr
from gradio_client import Client
import json
from datetime import datetime
# 使用 Hugging Face 提供的 Qwen 模型 API 端点
client = Client("https://qwen-qwen-72b-chat-demo.hf.space/--replicas/ypz66/")
# 输出文件夹
OUTPUT_DIR = "outputs"
os.makedirs(OUTPUT_DIR, exist_ok=True) # 创建输出目录
# 拆解 JD 成任务
def extract_task_from_jd(jd):
message = f"""你是一个岗位分析助手,请根据以下JD内容提取一个可以用来测试候选人核心能力的具体任务。
请以如下格式回复:
任务:(任务描述)
JD: {jd}"""
response = client.predict([message], api_name="/model_chat")
return response[0].strip()
# 基于任务生成三个解决方案
def generate_solutions_from_task(task):
message = f"""你是一个解决方案生成助手,请根据以下任务设计三种不同的实现思路。
请严格按如下格式输出:
方案1:(内容)
方案2:(内容)
方案3:(内容)
任务: {task}"""
response = client.predict([message], api_name="/model_chat")
solutions = response[0].split("\n")
if len(solutions) < 3:
return response[0], "(解析失败,显示原始回复)", ""
s1 = solutions[0].strip()
s2 = solutions[1].strip()
s3 = solutions[2].strip()
return s1, s2, s3
# 构建 Gradio UI
def build_ui():
with gr.Blocks() as demo:
gr.Markdown("## 📌 JD 任务拆解 + 解决方案选择 Demo")
# 输入 JD
jd_input = gr.Textbox(label="输入 JD", placeholder="请输入岗位描述 JD")
task_output = gr.Textbox(label="拆解出的测试任务", lines=2, interactive=False)
generate_task_btn = gr.Button("🧠 拆解 JD 成任务")
# 生成解决方案
generate_solutions_btn = gr.Button("🚀 基于任务生成三个方案")
sol1 = gr.Textbox(label="方案1", lines=10, interactive=False)
sol2 = gr.Textbox(label="方案2", lines=10, interactive=False)
sol3 = gr.Textbox(label="方案3", lines=10, interactive=False)
select_radio = gr.Radio(choices=["1", "2", "3"], label="请选择你最满意的解决方案编号")
# 用户输入方案的文本框
user_solution = gr.Textbox(lines=6, label="📄 填写你自己的解决方案(可选)")
# 提交按钮
submit = gr.Button("✅ 提交 RLHF 数据")
feedback = gr.Textbox(label="系统反馈", interactive=False)
task_state = gr.State()
# 处理 JD 拆解成任务
def handle_task_gen(jd_text):
task = extract_task_from_jd(jd_text)
return task, task
# 生成解决方案
def handle_solutions_gen(task_text):
s1, s2, s3 = generate_solutions_from_task(task_text)
return s1, s2, s3
# 提交反馈
def handle_submit(selected_idx, user_input_text, comment_text, task_text):
record = {
"task": task_text,
"selected_index": selected_idx,
"user_solution": user_input_text,
"comment": comment_text,
"timestamp": datetime.now().isoformat()
}
try:
with open("rlhf_jd_data.jsonl", "a", encoding="utf-8") as f:
json.dump(record, f, ensure_ascii=False)
f.write("\n")
return f"✅ 数据已保存,选择方案 {selected_idx}"
except Exception as e:
return f"❌ 保存失败:{str(e)}"
# 绑定按钮事件
generate_task_btn.click(fn=handle_task_gen, inputs=[jd_input], outputs=[task_output, task_state])
generate_solutions_btn.click(fn=handle_solutions_gen, inputs=[task_state], outputs=[sol1, sol2, sol3])
submit.click(fn=handle_submit, inputs=[select_radio, user_solution, comment, task_state], outputs=[feedback])
return demo
# 启动 Gradio 应用
if __name__ == "__main__":
demo = build_ui()
demo.launch()
|