|
|
|
|
|
import streamlit as st |
|
from models import demo_qwen, demo_r1, demo_zero |
|
|
|
st.set_page_config(page_title="DeepSeek Chatbot", layout="centered") |
|
|
|
|
|
def select_demo(model_name): |
|
if model_name == "DeepSeek-R1-Distill-Qwen-32B": |
|
return demo_qwen |
|
elif model_name == "DeepSeek-R1": |
|
return demo_r1 |
|
elif model_name == "DeepSeek-R1-Zero": |
|
return demo_zero |
|
else: |
|
return demo_qwen |
|
|
|
|
|
st.title("DeepSeek Chatbot") |
|
|
|
|
|
st.subheader("Model and Parameters") |
|
|
|
model_name = st.selectbox( |
|
"Select Model", |
|
["DeepSeek-R1-Distill-Qwen-32B", "DeepSeek-R1", "DeepSeek-R1-Zero"] |
|
) |
|
|
|
|
|
system_message = st.text_area( |
|
"System Message", |
|
value="You are a friendly Chatbot created by ruslanmv.com", |
|
height=80 |
|
) |
|
|
|
|
|
max_new_tokens = st.slider( |
|
"Max new tokens", |
|
min_value=1, |
|
max_value=4000, |
|
value=512, |
|
step=1 |
|
) |
|
|
|
|
|
temperature = st.slider( |
|
"Temperature", |
|
min_value=0.10, |
|
max_value=4.00, |
|
value=0.80, |
|
step=0.05 |
|
) |
|
|
|
|
|
top_p = st.slider( |
|
"Top-p (nucleus sampling)", |
|
min_value=0.10, |
|
max_value=1.00, |
|
value=0.90, |
|
step=0.05 |
|
) |
|
|
|
|
|
st.subheader("Chat") |
|
user_prompt = st.text_area("Your message:", value="", height=100) |
|
|
|
if "chat_history" not in st.session_state: |
|
st.session_state["chat_history"] = [] |
|
|
|
|
|
if st.button("Send"): |
|
if user_prompt.strip(): |
|
|
|
demo = select_demo(model_name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
combined_prompt = f"{system_message}\n\nUser: {user_prompt}" |
|
|
|
try: |
|
response = demo.predict( |
|
combined_prompt, |
|
max_new_tokens, |
|
temperature, |
|
top_p |
|
) |
|
except Exception as e: |
|
response = f"Error: {e}" |
|
|
|
st.session_state["chat_history"].append(("User", user_prompt)) |
|
st.session_state["chat_history"].append(("Assistant", response)) |
|
st.experimental_rerun() |
|
|
|
|
|
if st.session_state["chat_history"]: |
|
for role, text in st.session_state["chat_history"]: |
|
if role == "User": |
|
st.markdown(f"**{role}:** {text}") |
|
else: |
|
st.markdown(f"**{role}:** {text}") |
|
|
|
|