Spaces:
Sleeping
Sleeping
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("---")
|