forked from EduCoderStudent0014/SmartMenu
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
464 lines
26 KiB
464 lines
26 KiB
1 year ago
|
# coding=utf-8
|
||
|
from UI工具 import *
|
||
|
import gradio as gr
|
||
|
|
||
|
|
||
|
|
||
|
webui_title = """▶▶▶▶智能菜单系统◀◀◀◀"""
|
||
|
|
||
|
with gr.Blocks() as demo:
|
||
|
gr.Markdown(webui_title)
|
||
|
with gr.Tab("菜单推荐"):
|
||
|
with gr.Tab("基于知识库的推荐"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot([[None,zhishiku_init1]],label='基于知识库的菜单推荐',show_label=True,height=850)
|
||
|
query = gr.Textbox(show_label=True, label="请输入你的喜好,按回车提交")
|
||
|
|
||
|
with gr.Column(scale=5):
|
||
|
knowledge_set = gr.Accordion("知识库更新", visible=True,open=False)
|
||
|
answer_set = gr.Accordion("回答参数设置", visible=True,open=False)
|
||
|
with knowledge_set:
|
||
|
O_data_path = gr.Textbox(label="数据储存地址",
|
||
|
placeholder=args.original_data_path,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
|
||
|
P_data_path = gr.Textbox(label="向量库保存地址",
|
||
|
placeholder=args.preprocessed_data_path,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
|
||
|
emb_name = gr.Textbox(label="embedding模型",
|
||
|
placeholder='默认模型:'+args.embeddings_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
chunk_size = gr.Number(value=args.chunk_size,
|
||
|
label="数据切分最大长度",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
precision=0)
|
||
|
chunk_overlap = gr.Number(value=args.chunk_overlap,
|
||
|
label="数据片段最大重合",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=0,
|
||
|
precision=0)
|
||
|
chunk_size.change(fn=change_chunk_size,
|
||
|
inputs=[chunk_size],
|
||
|
outputs=[])
|
||
|
chunk_overlap.change(fn=change_chunk_overlap,
|
||
|
inputs=[chunk_overlap],
|
||
|
outputs=[])
|
||
|
|
||
|
db_update = gr.Button(value="更新知识库", visible=True)
|
||
|
|
||
|
O_data_path.change(fn=change_data_path,
|
||
|
inputs=[O_data_path],
|
||
|
outputs=[])
|
||
|
P_data_path.change(fn=change_P_data_path,
|
||
|
inputs=[P_data_path],
|
||
|
outputs=[])
|
||
|
emb_name.change(fn=change_emb_name,
|
||
|
inputs=[emb_name],
|
||
|
outputs=[])
|
||
|
db_update.click(fn=db_update_click1,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
with answer_set:
|
||
|
search_top_k = gr.Number(value=args.topk_1,
|
||
|
label="获取知识库内容条数",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0)
|
||
|
model_name = gr.Textbox(label="模型名字",
|
||
|
placeholder=args.pretrained_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
model_top_k = gr.Number(value=args.topk,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0)
|
||
|
model_temperature = gr.Slider(0, 1,
|
||
|
value=args.temperature,
|
||
|
step=0.01,
|
||
|
label="模型回答温度",
|
||
|
interactive=True)
|
||
|
|
||
|
search_top_k.change(fn=change_search_top_k,
|
||
|
inputs=[search_top_k],
|
||
|
outputs=[])
|
||
|
model_top_k.change(fn=change_model_top_k,
|
||
|
inputs=[model_top_k],
|
||
|
outputs=[])
|
||
|
model_temperature.change(fn=change_model_temperature,
|
||
|
inputs=[model_temperature],
|
||
|
outputs=[])
|
||
|
model_name.change(fn=change_model_name,
|
||
|
inputs=[model_name],
|
||
|
outputs=[])
|
||
|
query.submit(fn=get_answer,
|
||
|
inputs=[query, chatbot],
|
||
|
outputs=[chatbot, query])
|
||
|
clear = gr.ClearButton([chatbot], value='清除记录')
|
||
|
clear_cash = gr.Button(value="清理显存", visible=True)
|
||
|
clear_cash.click(fn=clean_memory,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
|
||
|
with gr.Tab("基于菜单的推荐"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot([[None,caidan_init0]],label='基于菜单的推荐', show_label=True,height=850)
|
||
|
query = gr.Textbox(show_label=True, label="请输入你的喜好,按回车提交")
|
||
|
|
||
|
with gr.Column(scale=5):
|
||
|
with gr.Tab("上传pdf菜单"):
|
||
|
caidan = gr.Textbox(label="菜单地址",
|
||
|
placeholder=args.path_caidan,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
caidan.change(fn=change_caidan_path,
|
||
|
inputs=[caidan])
|
||
|
with gr.Tab("添加图片文件"):
|
||
|
tu_caidan = gr.Image(label="添加图片文件", show_label=False, type='filepath')
|
||
|
tu_caidan.change(fn=change_caidan_path,
|
||
|
inputs=[tu_caidan])
|
||
|
|
||
|
answer_set = gr.Accordion("回答参数设置", visible=True, open=True)
|
||
|
with answer_set:
|
||
|
model_name = gr.Textbox(label="模型名字",
|
||
|
placeholder="默认模型:"+args.pretrained_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
model_top_k = gr.Number(value=args.topk,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0,)
|
||
|
model_temperature = gr.Slider(0, 1,
|
||
|
value=args.temperature,
|
||
|
step=0.01,
|
||
|
label="模型回答温度",
|
||
|
interactive=True)
|
||
|
model_top_k.change(fn=change_model_top_k,
|
||
|
inputs=[model_top_k],
|
||
|
outputs=[])
|
||
|
model_temperature.change(fn=change_model_temperature,
|
||
|
inputs=[model_temperature],
|
||
|
outputs=[])
|
||
|
model_name.change(fn=change_model_name,
|
||
|
inputs=[model_name],
|
||
|
outputs=[])
|
||
|
query.submit(fn=get_answer_caidan,
|
||
|
inputs=[query, chatbot],
|
||
|
outputs=[chatbot, query])
|
||
|
clear1 = gr.ClearButton([chatbot], value='清除记录')
|
||
|
clear_cash = gr.Button(value="清理显存", visible=True)
|
||
|
clear_cash.click(fn=clean_memory,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
|
||
|
with gr.Tab("大模型随机推荐"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot([[None,damodel_init0]],label='大模型随机推荐', show_label=True, height=850)
|
||
|
query = gr.Textbox(label='请输入你的喜好,按回车提交',show_label=True)
|
||
|
|
||
|
with gr.Column(scale=5):
|
||
|
answer_set = gr.Accordion("回答参数设置", visible=True)
|
||
|
with answer_set:
|
||
|
model_name = gr.Textbox(label="模型名字",
|
||
|
placeholder="默认模型:"+ args.pretrained_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
model_top_k = gr.Number(value=args.topk,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0,
|
||
|
)
|
||
|
model_temperature = gr.Slider(0, 1,
|
||
|
value=args.temperature,
|
||
|
step=0.01,
|
||
|
label="模型回答温度",
|
||
|
interactive=True)
|
||
|
model_top_k.change(fn=change_model_top_k,
|
||
|
inputs=[model_top_k],
|
||
|
outputs=[])
|
||
|
model_temperature.change(fn=change_model_temperature,
|
||
|
inputs=[model_temperature],
|
||
|
outputs=[])
|
||
|
model_name.change(fn=change_model_name,
|
||
|
inputs=[model_name],
|
||
|
outputs=[])
|
||
|
|
||
|
query.submit(fn=get_answer_model,
|
||
|
inputs=[query, chatbot],
|
||
|
outputs=[chatbot, query])
|
||
|
|
||
|
clear2 = gr.ClearButton([chatbot], value='清除记录')
|
||
|
clear_cash = gr.Button(value="清理显存", visible=True)
|
||
|
clear_cash.click(fn=clean_memory,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
|
||
|
with gr.Tab("自定义推荐"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot(label='自定义推荐', show_label=True, height=850)
|
||
|
clear3 = gr.ClearButton([chatbot], value='清除记录')
|
||
|
with gr.Column(scale=5):
|
||
|
with gr.Tab("从文件中获取随机内容"):
|
||
|
suijidz = gr.Textbox(label="随机内容地址",
|
||
|
placeholder='默认地址:'+ args.path_zidingyi,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
suiji_num = gr.Number(value=args.num_select,
|
||
|
label="随机数目",
|
||
|
minimum=1,
|
||
|
precision=0,
|
||
|
interactive=True)
|
||
|
suijidz.change(fn=change_path_zidingyi,
|
||
|
inputs=[suijidz],
|
||
|
outputs=[suijidz])
|
||
|
|
||
|
suiji_num.input(fn=change_suiji_num,
|
||
|
inputs=[suiji_num])
|
||
|
|
||
|
suiji_1 = gr.Button(value="开始随机", visible=True)
|
||
|
|
||
|
suiji_1.click(fn=Random_selection1,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
with gr.Tab("手动输入随机内容"):
|
||
|
suiji_nr2 = gr.Textbox(label="请输入随机内容",
|
||
|
placeholder='在这输入随机内容,一行是一条内容',
|
||
|
lines=12,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
suiji_num = gr.Number(value=args.num_select,
|
||
|
label="随机数目",
|
||
|
minimum=1,
|
||
|
precision=0,
|
||
|
interactive=True)
|
||
|
suiji_num.input(fn=change_suiji_num,
|
||
|
inputs=[suiji_num])
|
||
|
|
||
|
suiji_2 = gr.Button(value="开始随机", visible=True)
|
||
|
|
||
|
suiji_2.click(fn=Random_selection2,
|
||
|
inputs=[chatbot,suiji_nr2],
|
||
|
outputs=[chatbot])
|
||
|
|
||
|
with gr.Tab("智能识别"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
Chatbot = gr.Chatbot([[None,zhinengshibie]],label='智能识别', show_label=True, height=850)
|
||
|
clear4 = gr.ClearButton([Chatbot], value='清除记录')
|
||
|
with gr.Column(scale=4):
|
||
|
mode1 = gr.Radio(["菜品识别", "果蔬识别"],label="识别模式",value='菜品识别')
|
||
|
answer_set = gr.Accordion("参数设置", visible=True,open=False)
|
||
|
with answer_set:
|
||
|
shitu_top_k = gr.Number(value=args.top_num,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=20,
|
||
|
precision=0,
|
||
|
)
|
||
|
shitu_filter_threshold = gr.Slider(0, 1,
|
||
|
value=args.filter_threshold,
|
||
|
step=0.01,
|
||
|
label="图片识别阈值",
|
||
|
interactive=True)
|
||
|
shitu_baike_num = gr.Number(value=args.baike_num,
|
||
|
label="百科回答数",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=20,
|
||
|
precision=0)
|
||
|
shitu_top_k.change(fn=change_shitu_top_k,
|
||
|
inputs=[shitu_top_k])
|
||
|
shitu_filter_threshold.change(fn=change_shitu_filter_threshold,
|
||
|
inputs=[shitu_filter_threshold])
|
||
|
shitu_baike_num.change(fn=change_shitu_baike_num,
|
||
|
inputs=[shitu_baike_num])
|
||
|
|
||
|
with gr.Tab("添加图片文件"):
|
||
|
filepath = gr.Image(label="添加图片文件",show_label=False,type='filepath')
|
||
|
tupian_sb = gr.Button(value="开启图片识别", visible=True)
|
||
|
tupian_sb.click(fn=tupian_shibie,
|
||
|
inputs=[mode1,filepath,Chatbot],
|
||
|
outputs=[Chatbot])
|
||
|
|
||
|
with gr.Tab("菜单规划"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot([],label='菜单规划',show_label=True, height=850)
|
||
|
query = gr.Textbox(show_label=True, label="请输入你的食材,按回车提交")
|
||
|
query2 = gr.Textbox(show_label=True, label="请输入你想制作的菜肴进行询问,按回车提交")
|
||
|
with gr.Column(scale=5):
|
||
|
mode2 = gr.Radio(["启用", "不启用"], label="是否启用知识库", value='启用')
|
||
|
knowledge_set = gr.Accordion("知识库设定", visible=True,open=False)
|
||
|
answer_set = gr.Accordion("回答参数设置", visible=True, open=False)
|
||
|
with knowledge_set:
|
||
|
O_data_path = gr.Textbox(label="数据储存地址",
|
||
|
placeholder=args.original_data_path_g,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
|
||
|
P_data_path = gr.Textbox(label="向量库保存地址",
|
||
|
placeholder=args.preprocessed_data_path_g,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
|
||
|
emb_name = gr.Textbox(label="embedding模型",
|
||
|
placeholder='默认模型:' + args.embeddings_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
chunk_size = gr.Number(value=args.chunk_size,
|
||
|
label="数据切分最大长度",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
precision=0)
|
||
|
chunk_overlap = gr.Number(value=args.chunk_overlap,
|
||
|
label="数据片段最大重合",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=0,
|
||
|
precision=0)
|
||
|
chunk_size.change(fn=change_chunk_size,
|
||
|
inputs=[chunk_size],
|
||
|
outputs=[])
|
||
|
chunk_overlap.change(fn=change_chunk_overlap,
|
||
|
inputs=[chunk_overlap],
|
||
|
outputs=[])
|
||
|
|
||
|
db_update = gr.Button(value="更新知识库", visible=True)
|
||
|
|
||
|
O_data_path.change(fn=change_data_path_g,
|
||
|
inputs=[O_data_path],
|
||
|
outputs=[])
|
||
|
P_data_path.change(fn=change_P_data_path_g,
|
||
|
inputs=[P_data_path],
|
||
|
outputs=[])
|
||
|
emb_name.change(fn=change_emb_name,
|
||
|
inputs=[emb_name],
|
||
|
outputs=[])
|
||
|
db_update.click(fn=db_update_click,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
with answer_set:
|
||
|
search_top_k = gr.Number(value=args.topk_1,
|
||
|
label="获取知识库内容条数",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0)
|
||
|
model_name = gr.Textbox(label="模型名字",
|
||
|
placeholder=args.pretrained_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
model_top_k = gr.Number(value=args.topk,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0)
|
||
|
model_temperature = gr.Slider(0, 1,
|
||
|
value=args.temperature,
|
||
|
step=0.01,
|
||
|
label="模型回答温度",
|
||
|
interactive=True)
|
||
|
search_top_k.change(fn=change_search_top_k,
|
||
|
inputs=[search_top_k],
|
||
|
outputs=[])
|
||
|
model_top_k.change(fn=change_model_top_k,
|
||
|
inputs=[model_top_k],
|
||
|
outputs=[])
|
||
|
model_temperature.change(fn=change_model_temperature,
|
||
|
inputs=[model_temperature],
|
||
|
outputs=[])
|
||
|
model_name.change(fn=change_model_name,
|
||
|
inputs=[model_name],
|
||
|
outputs=[])
|
||
|
query.submit(fn=get_answer_guihua,
|
||
|
inputs=[query, chatbot,mode2],
|
||
|
outputs=[chatbot, query])
|
||
|
query2.submit(fn=get_answer_guihua2,
|
||
|
inputs=[query2, chatbot, mode2],
|
||
|
outputs=[chatbot, query2])
|
||
|
|
||
|
clear5 = gr.ClearButton([chatbot], value='清除记录')
|
||
|
clear_cash = gr.Button(value="清理显存", visible=True)
|
||
|
clear_cash.click(fn=clean_memory,
|
||
|
inputs=[chatbot],
|
||
|
outputs=[chatbot])
|
||
|
|
||
|
with gr.Tab("自由对话"):
|
||
|
with gr.Row():
|
||
|
with gr.Column(scale=10):
|
||
|
chatbot = gr.Chatbot([],label='自由对话',show_label=True, height=950)
|
||
|
query = gr.Textbox(show_label=True, label="在这输入,开始自由对话")
|
||
|
with gr.Column(scale=5):
|
||
|
model_name = gr.Textbox(label="模型名字",
|
||
|
placeholder=args.pretrained_model_name,
|
||
|
lines=1,
|
||
|
interactive=True,
|
||
|
visible=True)
|
||
|
model_top_k = gr.Number(value=args.topk,
|
||
|
label="模型回答tok",
|
||
|
interactive=True,
|
||
|
visible=True,
|
||
|
minimum=1,
|
||
|
maximum=50,
|
||
|
precision=0)
|
||
|
model_temperature = gr.Slider(0, 1,
|
||
|
value=args.temperature,
|
||
|
step=0.01,
|
||
|
label="模型回答温度",
|
||
|
interactive=True)
|
||
|
|
||
|
model_top_k.change(fn=change_model_top_k,
|
||
|
inputs=[model_top_k],
|
||
|
outputs=[])
|
||
|
model_temperature.change(fn=change_model_temperature,
|
||
|
inputs=[model_temperature],
|
||
|
outputs=[])
|
||
|
model_name.change(fn=change_model_name,
|
||
|
inputs=[model_name],
|
||
|
outputs=[])
|
||
|
query.submit(fn=ziyouduihau,
|
||
|
inputs=[query, chatbot],
|
||
|
outputs=[chatbot, query])
|
||
|
clear6 = gr.ClearButton([chatbot], value='清除记录')
|
||
|
|
||
|
demo.queue(concurrency_count=3).launch(server_name='localhost',server_port=7989)
|