File size: 4,463 Bytes
f1fef64
317e409
f70fc29
539566d
c2dfdca
f70fc29
 
 
 
 
 
 
 
 
317e409
f70fc29
539566d
 
 
 
f70fc29
 
 
 
317e409
f70fc29
 
 
 
 
 
 
 
 
317e409
c2dfdca
f70fc29
c2dfdca
 
f70fc29
c2dfdca
 
f70fc29
 
c2dfdca
f70fc29
 
 
 
c2dfdca
f70fc29
 
 
 
 
 
c2dfdca
f70fc29
 
 
 
 
c2dfdca
 
 
 
f70fc29
 
 
c2dfdca
a26f5ee
f70fc29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c2dfdca
f70fc29
 
 
 
 
 
 
 
c2dfdca
f70fc29
 
 
 
c2dfdca
317e409
 
f70fc29
f1fef64
2b3ca21
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
import gradio as gr

# Placeholder for model loading (adjust as needed for your specific models)
def load_model(model_name):
    print(f"Loading {model_name}...")
    # Simulate different model behaviors (replace with actual model logic)
    if model_name == "DeepSeek-R1-Distill-Qwen-32B":
        return lambda input_text, history: f"Distilled Model Response to: {input_text}"
    elif model_name == "DeepSeek-R1":
        return lambda input_text, history: f"Base Model Response to: {input_text}"
    elif model_name == "DeepSeek-R1-Zero":
        return lambda input_text, history: f"Zero Model Response to: {input_text}"
    else:
        return lambda input_text, history: f"Default Response to: {input_text}"

# Load the models (placeholder functions here)
deepseek_r1_distill = load_model("DeepSeek-R1-Distill-Qwen-32B")
deepseek_r1 = load_model("DeepSeek-R1")
deepseek_r1_zero = load_model("DeepSeek-R1-Zero")

# --- Chatbot function ---
def chatbot(input_text, history, model_choice, system_message, max_new_tokens, temperature, top_p):
    history = history or []
    print(f"Input: {input_text}, History: {history}, Model: {model_choice}")

    # Choose the model based on user selection
    if model_choice == "DeepSeek-R1-Distill-Qwen-32B":
        model_function = deepseek_r1_distill
    elif model_choice == "DeepSeek-R1":
        model_function = deepseek_r1
    elif model_choice == "DeepSeek-R1-Zero":
        model_function = deepseek_r1_zero
    else:
        model_function = lambda x, h: "Please select a model."

    # Simulate model response with parameters
    response = model_function(input_text, history)
    # Format the response for display (without parameter details in the main chat)
    display_response = f"{response}"

    history.append((input_text, display_response))
    return history, history, "", model_choice, system_message, max_new_tokens, temperature, top_p  # Clear input, keep other parameters

# --- Gradio Interface ---
with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown(
        """
        # DeepSeek Chatbot
        Created by [ruslanmv.com](https://ruslanmv.com/)

        This is a demo of different DeepSeek models. Select a model, type your message, and click "Submit".
        You can also adjust optional parameters like system message, max new tokens, temperature, and top-p.
        """
    )

    with gr.Row():
        with gr.Column():
            chatbot_output = gr.Chatbot(label="DeepSeek Chatbot", height=500)
            msg = gr.Textbox(label="Your Message", placeholder="Type your message here...")
            with gr.Row():
                submit_btn = gr.Button("Submit", variant="primary")
                clear_btn = gr.ClearButton([msg, chatbot_output])

    # Options moved below the chat interface
    with gr.Row():
        with gr.Accordion("Options", open=True): # Changed label to "Options"
            model_choice = gr.Radio(
                choices=["DeepSeek-R1-Distill-Qwen-32B", "DeepSeek-R1", "DeepSeek-R1-Zero"],
                label="Choose a Model",
                value="DeepSeek-R1"
            )
            with gr.Accordion("Optional Parameters", open=False):
                system_message = gr.Textbox(
                    label="System Message",
                    value="You are a friendly Chatbot created by ruslanmv.com",
                    lines=2,
                )
                max_new_tokens = gr.Slider(
                    minimum=1, maximum=4000, value=200, label="Max New Tokens"
                )
                temperature = gr.Slider(
                    minimum=0.10, maximum=4.00, value=0.70, label="Temperature"
                )
                top_p = gr.Slider(
                    minimum=0.10, maximum=1.00, value=0.90, label="Top-p (nucleus sampling)"
                )
    

    # Maintain chat history
    chat_history = gr.State([])

    # Event handling
    submit_btn.click(
        chatbot,
        [msg, chat_history, model_choice, system_message, max_new_tokens, temperature, top_p],
        [chatbot_output, chat_history, msg, model_choice, system_message, max_new_tokens, temperature, top_p],
    )
    msg.submit(
        chatbot,
        [msg, chat_history, model_choice, system_message, max_new_tokens, temperature, top_p],
        [chatbot_output, chat_history, msg, model_choice, system_message, max_new_tokens, temperature, top_p],
    )

# Launch the demo
if __name__ == "__main__":
    demo.launch()