"""
来自 https://github.com/OpenLMLab/MOSS/blob/main/moss_web_demo_gradio.py
# 难点
## TODO
- 第一句:
- 代码和表格的预览
- markdown解析:mdtex2html
- 可编辑chatbot:https://github.com/gradio-app/gradio/issues/4444
- 一个button,
## Reference
- https://github.com/GaiZhenbiao/ChuanhuChatGPT/
"""
from app_util import *
system_list = [
"You are a helpful assistant.",
"你是一个导游。",
"你是一个英语老师。",
"你是一个程序员。",
"你是一个心理咨询师。",
]
"""
TODO: 使用说明
"""
with gr.Blocks() as demo:
# Knowledge Distillation through Self Chatting
gr.HTML("""
Distilling the Knowledge through Self Chatting
""")
system = gr.Dropdown(
choices=system_list,
value=system_list[0],
allow_custom_value=True,
interactive=True,
label="System message"
)
chatbot = gr.Chatbot(avatar_images=("assets/man.png", "assets/bot.png"))
with gr.Row():
with gr.Column(scale=4):
generated_text = gr.Textbox(show_label=False, placeholder="...", lines=10, visible=False)
with gr.Row():
generate_btn = gr.Button("🤔️ Generate")
retry_btn = gr.Button("🔄 Regenerate")
undo_btn = gr.Button("↩️ Undo")
clear_btn = gr.Button("🗑️ Clear") # 🧹 Clear History (清除历史)
stop_btn = gr.Button("停止生成", variant="primary")
with gr.Column(scale=1):
# generate_query_btn = gr.Button("Generate First Query")
gr.Dropdown(
["moss", "chatglm-2", "chatpdf"],
value="moss",
label="问题生成器",
# info="Will add more animals later!"
)
gr.Dropdown(
["moss", "chatglm-2", "gpt3.5-turbo"],
value="gpt3.5-turbo",
label="回复生成器",
# info="Will add more animals later!"
)
slider_max_new_tokens = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens")
slider_temperature = gr.Slider(minimum=0.1, maximum=10.0, value=5, step=0.1, label="Temperature",
info="Larger temperature increase the randomness")
slider_top_p = gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
)
########
history = gr.State([{"role": "system", "content": system_list[0]}])
system.change(reset_state, inputs=[system], outputs=[chatbot, history], show_progress="full")
# submit_btn.click(reset_user_input, [], [user_input])
clear_btn.click(reset_state, inputs=[system], outputs=[chatbot, history], show_progress="full")
generate_btn.click(generate, [chatbot, history], outputs=[generated_text, chatbot, history],
show_progress="full")
slider_max_new_tokens.change(set_max_tokens, inputs=[slider_max_new_tokens])
demo.queue().launch(share=False, server_name="0.0.0.0")
# demo.queue().launch(share=True)