File size: 4,042 Bytes
a1f93e9
 
d72c532
459fbe3
5799733
d72c532
8988bbf
 
 
 
 
 
 
a1f93e9
7085eea
 
 
 
a1f93e9
7085eea
d72c532
8988bbf
 
7085eea
3ac04fa
f0929ee
 
 
 
 
 
 
 
7085eea
 
f0929ee
 
d89d143
7085eea
d72c532
f0929ee
 
 
 
7085eea
f0929ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5799733
 
 
8988bbf
459fbe3
 
d72c532
d89d143
 
411027b
 
 
3ac04fa
459fbe3
 
 
f0929ee
 
459fbe3
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""
"""

import config
from app_util import *

system_list = [
    "You are a helpful assistant.",
    "你是一个导游。",
    "你是一个英语老师。",
    "你是一个程序员。",
    "你是一个心理咨询师。",
]

doc = """\
There are maily two types of user simulator:
- prompt-based user-simulator (role-play)
- model-based user-simulator
"""

with gr.Blocks() as demo:
    # Knowledge Distillation through Self Chatting
    gr.HTML("""<h1 align="center">Distilling the Knowledge through Self Chatting</h1>""")
    gr.Markdown(doc, visible=False)
    with gr.Row():
        with gr.Column(scale=5):
            system = gr.Dropdown(
                choices=system_list,
                value=system_list[0],
                allow_custom_value=True,
                interactive=True,
                label="System message",
                scale=5,
            )

            chatbot = gr.Chatbot(avatar_images=("assets/man.png", "assets/bot.png"))

            generated_text = gr.Textbox(show_label=False, placeholder="...", lines=10, visible=False)
            generate_btn = gr.Button("🤔️ Generate", variant="primary")
            with gr.Row():
                retry_btn = gr.Button("🔄  Regenerate", variant="secondary", size="sm", )
                undo_btn = gr.Button("↩️ Undo", variant="secondary", size="sm", )
                clear_btn = gr.Button("🗑️  Clear", variant="secondary", size="sm", )  # 🧹 Clear History (清除历史)
                # stop_btn = gr.Button("停止生成", variant="stop", visible=False)

        with gr.Column(variant="compact"):
        # with gr.Column():
            model = gr.Dropdown(
                ["Qwen2-0.5B-Instruct", "llama3.1", "gemini"],
                value="Qwen2-0.5B-Instruct",
                label="Model",
                interactive=True,
                # visible=False
            )
            with gr.Accordion(label="Parameters", open=True):
                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)",
                )
                slider_top_k = gr.Slider(
                    minimum=1,
                    maximum=200,
                    value=config.DEFAULT_TOP_K,
                    step=1,
                    label="Top-k",
                )


    ########
    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_temperature.change(set_temperature, inputs=[slider_temperature])
    slider_top_p.change(set_top_p, inputs=[slider_top_p])
    slider_top_k.change(set_top_k, inputs=[slider_top_k])

# demo.queue().launch(share=False, server_name="0.0.0.0")
# demo.queue().launch(concurrency_count=1, max_size=5)
demo.queue().launch()