|
""" |
|
来自 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: |
|
|
|
gr.HTML("""<h1 align="center">Distilling the Knowledge through Self Chatting</h1>""") |
|
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") |
|
stop_btn = gr.Button("停止生成", variant="primary") |
|
with gr.Column(scale=1): |
|
|
|
gr.Dropdown( |
|
["moss", "chatglm-2", "chatpdf"], |
|
value="moss", |
|
label="问题生成器", |
|
|
|
) |
|
gr.Dropdown( |
|
["moss", "chatglm-2", "gpt3.5-turbo"], |
|
value="gpt3.5-turbo", |
|
label="回复生成器", |
|
|
|
) |
|
|
|
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") |
|
|
|
|
|
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") |
|
|
|
|