import gradio as gr from tools import scan_docs_directory from global_var import get_docs, scan_docs_directory, get_prompt_store def dataset_generate_page(): with gr.Blocks() as demo: gr.Markdown("## 数据集生成") with gr.Row(): with gr.Column(): # 获取文档列表并设置初始值 docs_list = [str(doc.name) for doc in get_docs()] initial_doc = docs_list[0] if docs_list else None doc_dropdown = gr.Dropdown( choices=docs_list, value=initial_doc, # 设置初始选中项 label="选择文档", allow_custom_value=True, interactive=True ) doc_state = gr.State(value=initial_doc) # 用文档初始值初始化状态 with gr.Column(): # 获取模板列表并设置初始值 prompts = get_prompt_store().all() prompt_choices = [f"{p['id']} {p['name']}" for p in prompts] initial_prompt = prompt_choices[0] if prompt_choices else None prompt_dropdown = gr.Dropdown( choices=prompt_choices, value=initial_prompt, # 设置初始选中项 label="选择模板", allow_custom_value=True, interactive=True ) prompt_state = gr.State(value=initial_prompt) # 用模板初始值初始化状态 # 绑定事件(保留原有逻辑,确保交互时更新) doc_dropdown.change(lambda x: x, inputs=doc_dropdown, outputs=doc_state) prompt_dropdown.change(lambda x: x, inputs=prompt_dropdown, outputs=prompt_state) return demo