65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
import gradio as gr
|
|
import sys
|
|
from pathlib import Path
|
|
from langchain.prompts import PromptTemplate
|
|
|
|
sys.path.append(str(Path(__file__).resolve().parent.parent))
|
|
from global_var import get_docs, 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_list = [f"{p['id']} {p['name']}" for p in prompts]
|
|
initial_prompt = prompt_list[0] if prompt_list else None
|
|
|
|
prompt_dropdown = gr.Dropdown(
|
|
choices=prompt_list,
|
|
value=initial_prompt, # 设置初始选中项
|
|
label="选择模板",
|
|
allow_custom_value=True,
|
|
interactive=True
|
|
)
|
|
prompt_state = gr.State(value=initial_prompt) # 用模板初始值初始化状态
|
|
|
|
# 新增事件绑定
|
|
def on_doc_change(selected_doc):
|
|
print(f"文档选择已更改为: {selected_doc}")
|
|
return selected_doc
|
|
|
|
def on_prompt_change(selected_prompt):
|
|
print(f"模板选择已更改为: {selected_prompt}")
|
|
selected_prompt_id = int(selected_prompt.split(" ")[0])
|
|
selected_prompt = get_prompt_store().get(doc_id=selected_prompt_id)
|
|
selected_prompt = selected_prompt["content"]
|
|
selected_prompt = PromptTemplate.from_template(selected_prompt)
|
|
input_variables_list = selected_prompt.input_variables
|
|
return selected_prompt
|
|
|
|
doc_dropdown.change(on_doc_change, inputs=doc_dropdown, outputs=doc_state)
|
|
prompt_dropdown.change(on_prompt_change, inputs=prompt_dropdown, outputs=prompt_state)
|
|
|
|
return demo
|
|
|
|
if __name__ == "__main__":
|
|
from global_var import init_global_var
|
|
init_global_var("workdir")
|
|
demo = dataset_generate_page()
|
|
demo.launch() |