File size: 3,326 Bytes
9ab0176
07a96e5
9ab0176
07a96e5
 
 
 
 
 
9ab0176
07a96e5
 
 
 
 
 
 
539566d
07a96e5
 
 
 
 
 
 
 
9ab0176
07a96e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1472595
ef99990
07a96e5
 
 
 
 
ef99990
 
1472595
9122113
07a96e5
 
 
1472595
 
9122113
d9faa8c
ef99990
1472595
ef99990
9ab0176
f70fc29
07a96e5
9ab0176
 
c2dfdca
07a96e5
 
 
9ab0176
 
 
 
 
 
f70fc29
07a96e5
 
f70fc29
07a96e5
 
 
9ab0176
07a96e5
9ab0176
 
 
 
 
 
f70fc29
9ab0176
07a96e5
9ab0176
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
import streamlit as st
from models import demo  # Import the demo object from models.py

# --- Streamlit App Configuration ---
st.set_page_config(
    page_title="DeepSeek Chatbot",
    page_icon="🤖",
    layout="wide"
)

# --- App Title and Description ---
st.title("DeepSeek Chatbot")
st.markdown("""
    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.
""")

# --- Sidebar for Model Selection and Parameters ---
with st.sidebar:
    st.header("Options")
    model_choice = st.radio(
        "Choose a Model",
        options=["DeepSeek-R1-Distill-Qwen-32B", "DeepSeek-R1", "DeepSeek-R1-Zero"],
        index=1  # Default to "DeepSeek-R1"
    )
    
    with st.expander("Optional Parameters", expanded=False):
        system_message = st.text_area(
            "System Message",
            value="You are a friendly Chatbot created by ruslanmv.com",
            height=100
        )
        max_new_tokens = st.slider(
            "Max New Tokens",
            min_value=1,
            max_value=4000,
            value=200
        )
        temperature = st.slider(
            "Temperature",
            min_value=0.10,
            max_value=4.00,
            value=0.70
        )
        top_p = st.slider(
            "Top-p (nucleus sampling)",
            min_value=0.10,
            max_value=1.00,
            value=0.90
        )

# --- Chatbot Function ---
def chatbot(input_text, history, model_choice, system_message, max_new_tokens, temperature, top_p):
    # Create payload for the model
    payload = {
        "messages": [{"role": "user", "content": input_text}],
        "system": system_message,
        "max_tokens": max_new_tokens,
        "temperature": temperature,
        "top_p": top_p
    }
    
    # Run inference using the selected model
    try:
        response = demo(payload)  # Use the demo object directly
        if isinstance(response, dict) and "choices" in response:
            assistant_response = response["choices"][0]["message"]["content"]
        else:
            assistant_response = "Unexpected model response format."
    except Exception as e:
        assistant_response = f"Error: {str(e)}"
    
    # Append user and assistant messages to history
    history.append((input_text, assistant_response))
    return history

# --- Chat History Management ---
if "chat_history" not in st.session_state:
    st.session_state.chat_history = []

# --- Chat Interface ---
st.header("Chat with DeepSeek")

# Display chat history
for user_msg, assistant_msg in st.session_state.chat_history:
    with st.chat_message("user"):
        st.write(user_msg)
    with st.chat_message("assistant"):
        st.write(assistant_msg)

# Input for new message
input_text = st.chat_input("Type your message here...")

# Handle new message submission
if input_text:
    # Update chat history
    st.session_state.chat_history = chatbot(
        input_text,
        st.session_state.chat_history,
        model_choice,
        system_message,
        max_new_tokens,
        temperature,
        top_p
    )
    
    # Rerun the app to display the updated chat history
    st.rerun()