|
""" |
|
来自 https://github.com/OpenLMLab/MOSS/blob/main/moss_web_demo_gradio.py |
|
|
|
|
|
# 难点 |
|
|
|
## TODO |
|
|
|
|
|
-[x] 代码和表格的预览 |
|
-[x] markdown解析:mdtex2html |
|
-[ ] 可编辑chatbot:https://github.com/gradio-app/gradio/issues/4444 |
|
-[ ] 乱码问题 |
|
|
|
|
|
## Reference |
|
|
|
- https://github.com/GaiZhenbiao/ChuanhuChatGPT/ |
|
""" |
|
|
|
import config |
|
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>""") |
|
with gr.Row(): |
|
system = gr.Dropdown( |
|
choices=system_list, |
|
value=system_list[0], |
|
allow_custom_value=True, |
|
interactive=True, |
|
label="System message", |
|
scale=4, |
|
) |
|
gr.Dropdown( |
|
["Qwen2-0.5B-Instruct", "llama3.1", "gemini"], |
|
value="Qwen2-0.5B-Instruct", |
|
label="model", |
|
interactive=True, |
|
scale=1, |
|
) |
|
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") |
|
|
|
slider_max_tokens = gr.Slider(minimum=1, maximum=config.MAX_SEQUENCE_LENGTH, |
|
value=config.DEFAULT_MAX_TOKENS, step=1, label="Max tokens") |
|
slider_temperature = gr.Slider(minimum=0.1, maximum=10.0, |
|
value=config.DEFAULT_TEMPERATURE, step=0.1, label="Temperature", |
|
info="Larger temperature increase the randomness") |
|
slider_top_p = gr.Slider( |
|
minimum=0.1, |
|
maximum=1.0, |
|
value=config.DEFAULT_TOP_P, |
|
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]) |
|
clear_btn.click(reset_state, inputs=[system], outputs=[chatbot, history]) |
|
|
|
generate_btn.click(generate, [chatbot, history], outputs=[generated_text, chatbot, history], |
|
show_progress="full") |
|
retry_btn.click(undo_generate, [chatbot, history], outputs=[generated_text, chatbot, history]) \ |
|
.then(generate, [chatbot, history], outputs=[generated_text, chatbot, history], |
|
show_progress="full") |
|
undo_btn.click(undo_generate, [chatbot, history], outputs=[generated_text, chatbot, history]) |
|
|
|
slider_max_tokens.change(set_max_tokens, inputs=[slider_max_tokens]) |
|
slider_top_p.change(set_top_p, inputs=[slider_top_p]) |
|
slider_temperature.change(set_temperature, inputs=[slider_temperature]) |
|
|
|
|
|
|
|
demo.queue().launch() |
|
|