File size: 4,182 Bytes
581f159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import fn
import gradio as gr
import models

def fn_chat(instruction, input, model, dtype, is_messages, template, max_new_tokens, temperature, top_p, top_k, repetition_penalty):
    args = {
        'instruction': instruction,
        'input': input,
        'model': model,
        'dtype': dtype,
        'is_messages': is_messages,
        'template': template,
        'max_new_tokens': int(max_new_tokens),
        'temperature': float(temperature),
        'top_p': float(top_p),
        'top_k': int(top_k),
        'repetition_penalty': float(repetition_penalty),
    }

    content = fn.infer(args)
    return content

with gr.Blocks() as demo:
    opt = models.get_head_options()

    with gr.Row():
        with gr.Column(scale=1):
            model = gr.Textbox(
                value=opt['model'],
                label='model',
                show_label=True,
                interactive=True,
                show_copy_button=True,
            )

            dtype = gr.Dropdown(
                value=opt['dtype'],
                choices=['int4','int8','fp16', 'bf16'],
                label='dtype',
                show_label=True,
                interactive=True,
                allow_custom_value=True,
            )
            template = gr.Textbox(
                value=opt['template'],
                lines=3,
                label='template',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            is_messages = gr.Checkbox(
                value=opt['is_messages'],
                label='is_messages',
                show_label=True,
                interactive=True,
                )

        with gr.Column(scale=1):
            max_new_tokens = gr.Textbox(
                value=opt['max_new_tokens'],
                label='max_new_tokens',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            temperature = gr.Textbox(
                value=opt['temperature'],
                label='temperature',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            top_p = gr.Textbox(
                value=opt['top_p'],
                label='top_p',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            top_k = gr.Textbox(
                value=opt['top_k'],
                label='top_k',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            repetition_penalty = gr.Textbox(
                value=opt['repetition_penalty'],
                label='repetition_penalty',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )

    with gr.Accordion('Preset', open=False):
        gr.Examples(
            models.get_examples(),
            [model, dtype, is_messages, template, max_new_tokens, temperature, top_p, top_k, repetition_penalty],
        )

    with gr.Row():
        with gr.Column(scale=1):
            instruction = gr.Textbox(
                lines=20,
                label='instruction',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            user_input = gr.Textbox(
                lines=1,
                label='input',
                show_label=True,
                interactive=True,
                show_copy_button=True,
                )
            chat_button = gr.Button(value='chat')

        with gr.Column(scale=1):
            said = gr.Textbox(
                label='said',
                lines=15,
                show_label=True,
                show_copy_button=True,
                )

    chat_button.click(
        fn=fn_chat,
        inputs=[instruction, user_input, model, dtype, is_messages, template, max_new_tokens, temperature, top_p, top_k, repetition_penalty],
        outputs=[said],
        )

if __name__ == '__main__':
    demo.launch()