55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
import gradio as gr
|
||
from global_var import get_datasets
|
||
from tinydb import Query
|
||
|
||
def dataset_manage_page():
|
||
with gr.Blocks() as demo:
|
||
gr.Markdown("## 数据集管理")
|
||
with gr.Row():
|
||
# 获取数据集列表并设置初始值
|
||
datasets_list = [str(ds["name"]) for ds in get_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
|
||
)
|
||
|
||
# 添加数据集展示组件
|
||
qa_dataset = gr.Dataset(
|
||
components=["text", "text"],
|
||
label="问答数据",
|
||
headers=["问题", "答案"],
|
||
samples=[["示例问题", "示例答案"]],
|
||
samples_per_page=20,
|
||
)
|
||
|
||
def update_qa_display(dataset_name):
|
||
if not dataset_name:
|
||
return {"samples": [], "__type__": "update"}
|
||
|
||
# 从数据库获取数据集
|
||
Dataset = Query()
|
||
ds = get_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 |