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

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)