File size: 3,307 Bytes
9925762
 
 
 
 
 
79e9b6a
9925762
 
aed9a4d
9925762
 
 
aed9a4d
9925762
 
 
aed9a4d
9925762
 
 
 
aed9a4d
 
9925762
aed9a4d
9925762
aed9a4d
 
 
 
 
9925762
 
aed9a4d
9925762
aed9a4d
9925762
 
aed9a4d
9925762
 
aed9a4d
 
 
9925762
 
 
 
 
aed9a4d
9925762
 
 
 
 
aed9a4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9925762
 
aed9a4d
9925762
 
 
 
aed9a4d
 
 
 
 
 
 
9925762
 
 
 
 
 
aed9a4d
 
 
 
 
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
import streamlit as st
import os
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import HumanMessage, SystemMessage

# Set environment variables
hf = os.getenv('HF_TOKEN')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf

# Page setup
st.set_page_config(page_title="Statistics Mentor Chat", layout="centered")

# Custom style
st.markdown("""
    <style>
    .main {
        background: linear-gradient(135deg, #3e32a8 0%, #80ffe0 100%);
        padding: 2rem;
        font-family: 'Segoe UI', sans-serif;
    }
    .stButton>button {
        background: #ffffff10;
        border: 2px solid #ffffff50;
        color: white;
        font-size: 18px;
        font-weight: 600;
        padding: 0.8em 1.2em;
        border-radius: 12px;
        width: 100%;
        transition: 0.3s ease;
        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
    }
    .stButton>button:hover {
        background: #ffffff30;
        border-color: #fff;
        color: #ffffff;
    }
    h1, h3, p, label {
        color: #ffffff;
        text-align: center;
    }
    hr {
        border: 1px solid #ffffff50;
        margin: 2em 0;
    }
    </style>
""", unsafe_allow_html=True)

# Title
st.title("📊 Statistics Mentor Chat")

# Sidebar
st.sidebar.title("Mentor Preferences")
exp = st.sidebar.selectbox("Select your experience level:", ["Beginner", "Intermediate", "Expert"])

# Model setup
stats_model_skeleton = HuggingFaceEndpoint(
    repo_id='THUDM/GLM-4-32B-0414',
    provider='novita',
    temperature=0.7,
    max_new_tokens=110,
    task='conversational'
)

stats_mentor = ChatHuggingFace(
    llm=stats_model_skeleton,
    repo_id='THUDM/GLM-4-32B-0414',
    provider='novita',
    temperature=0.7,
    max_new_tokens=110,
    task='conversational'
)

# Session key
PAGE_KEY = "chat_history_stats"
if PAGE_KEY not in st.session_state:
    st.session_state[PAGE_KEY] = []

# Chat form
with st.form(key="chat_form"):
    user_input = st.text_input("Ask your question:")
    submit = st.form_submit_button("Send")

# Chat logic
if submit and user_input:
    system_prompt = (f"""Act as a deep learning mentor with {exp} years of experience. Teach in a friendly, approachable manner while following these strict rules:
        1. Only answer questions related to deep learning programming (including libraries, frameworks, and tools in the deep learning ecosystem)
        2. For any non-deep learning query, respond with exactly: "I specialize only in deep learning programming. This appears to be a non-deep learning topic."
        3. Never suggest you can help with non-deep learning topics
        4. Keep explanations clear, practical, and beginner-friendly when appropriate
        5. Include practical examples when explaining concepts
        6. For advanced topics, assume the student has basic deep learning knowledge"""  
    )
    messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
    result = stats_mentor.invoke(messages)
    st.session_state[PAGE_KEY].append((user_input, result.content))

# Display chat history
st.subheader("🗨️ Chat History")
for user, bot in st.session_state[PAGE_KEY]:
    st.markdown(f"**You:** {user}")
    st.markdown(f"**Mentor:** {bot}")
    st.markdown("---")