From 8fb9f785b9f663cc5f15b7aad0c7baf3d4bfed8c Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Wed, 9 Apr 2025 22:23:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E5=B1=95=E7=A4=BA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E7=AD=94=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 QA 数据集展示组件 - 实现数据集选择时动态加载对应的问答数据 - 优化数据集管理页面布局 --- frontend/dataset_manage_page.py | 60 +++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/frontend/dataset_manage_page.py b/frontend/dataset_manage_page.py index c90c5c0..041b491 100644 --- a/frontend/dataset_manage_page.py +++ b/frontend/dataset_manage_page.py @@ -1,28 +1,54 @@ import gradio as gr from global_var import datasets +from tinydb import Query def dataset_manage_page(): with gr.Blocks() as demo: gr.Markdown("## 数据集管理") with gr.Row(): - with gr.Column(): - # 获取数据集列表并设置初始值 - datasets_list = [str(ds["name"]) for ds in datasets.all()] - initial_dataset = datasets_list[0] if datasets_list else None - - dataset_dropdown = gr.Dropdown( - choices=datasets_list, - value=initial_dataset, # 设置初始选中项 - label="选择数据集", - allow_custom_value=True, - interactive=True - ) - dataset_state = gr.State(value=initial_dataset) # 用数据集初始值初始化状态 + # 获取数据集列表并设置初始值 + datasets_list = [str(ds["name"]) for ds in datasets.all()] + initial_dataset = datasets_list[0] if datasets_list else None + + dataset_dropdown = gr.Dropdown( + choices=datasets_list, + value=initial_dataset, # 设置初始选中项 + label="选择数据集", + allow_custom_value=True, + interactive=True + ) - with gr.Column(): - pass + # 添加数据集展示组件 + qa_dataset = gr.Dataset( + components=["text", "text"], + label="问答数据", + headers=["问题", "答案"], + samples=[["示例问题", "示例答案"]] + ) - # 绑定事件,确保交互时更新状态 - dataset_dropdown.change(lambda x: x, inputs=dataset_dropdown, outputs=dataset_state) + def update_qa_display(dataset_name): + if not dataset_name: + return {"samples": [], "__type__": "update"} + + # 从数据库获取数据集 + Dataset = Query() + ds = datasets.get(Dataset.name == dataset_name) + if not ds: + return {"samples": [], "__type__": "update"} + + # 提取所有Q_A数据 + qa_list = [] + for item in ds["dataset_items"]: + for qa in item["message"]: + qa_list.append([qa["question"], qa["answer"]]) + + return {"samples": qa_list, "__type__": "update"} + + # 绑定事件,更新QA数据显示 + dataset_dropdown.change( + update_qa_display, + inputs=dataset_dropdown, + outputs=qa_dataset + ) return demo \ No newline at end of file