File size: 2,769 Bytes
daa716a
 
 
56a1af5
daa716a
56a1af5
c5ebafe
daa716a
 
339623f
56a1af5
339623f
56a1af5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339623f
daa716a
56a1af5
daa716a
56a1af5
daa716a
56a1af5
339623f
daa716a
 
 
 
 
 
 
339623f
 
daa716a
 
 
 
 
 
 
56a1af5
 
 
 
daa716a
56a1af5
daa716a
 
 
 
56a1af5
daa716a
339623f
56a1af5
 
 
339623f
daa716a
339623f
56a1af5
daa716a
56a1af5
daa716a
56a1af5
daa716a
 
339623f
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
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('Data_science')
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 statistics mentor with {exp.lower()} expertise. "
        f"Answer in a friendly tone and within 150 words. "
        f"If the question is not statistics-related, politely say it's out of scope."
    )
    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("---")