Spaces:
Running
Running
File size: 5,123 Bytes
f50b5cb d986f88 f50b5cb a39b37f f50b5cb d986f88 f50b5cb d986f88 f50b5cb d986f88 f50b5cb d986f88 f9b44c9 a39b37f 0afb4fe f50b5cb d986f88 f50b5cb d986f88 0afb4fe f9b44c9 f50b5cb d986f88 0afb4fe d986f88 f50b5cb d986f88 0afb4fe f50b5cb d986f88 0afb4fe d986f88 f50b5cb d986f88 f50b5cb 6fd2cd0 93ce395 f50b5cb |
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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
import streamlit as st
import os
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import HumanMessage, SystemMessage
# Set environment variables for Hugging Face token
hf = os.getenv('HF_TOKEN')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf
# Page config
st.set_page_config(page_title="Deep Learning Mentor Chat", layout="centered")
st.markdown("""
<style>
body {
background-color: #1e1e2f;
font-family: 'Segoe UI', sans-serif;
}
.main {
background: linear-gradient(to right,#3e32a8, #80ffe0);
padding: 2rem;
border-radius: 12px;
}
h1, h2, h3, p, label {
color: white !important;
text-align: center;
}
.stTextInput>div>div>input {
border: 1px solid #ddd;
border-radius: 10px;
padding: 0.5rem;
font-size: 16px;
width: 100%;
}
.stButton>button {
background-color: #6a00ff;
color: white;
padding: 0.6rem 1.2rem;
font-size: 16px;
font-weight: 600;
border: None;
border-radius: 10px;
transition: all 0.3s ease;
}
.stButton>button:hover {
background-color: #5300e8;
color: white;
border-color: #fff;
}
.chat-box {
background-color: #ffffff15;
border-radius: 12px;
padding: 1rem;
margin-bottom: 1rem;
color: white;
line-height: 1.6;
}
.user-msg {
color: #e0e0e0;
font-weight: 600;
}
.bot-msg {
color: #ffffff;
margin-top: 0.3rem;
}
.chat-container {
display: flex;
flex-direction: column;
gap: 0.5rem;
margin-top: 2rem;
}
.chat-bubble-user {
background-color: #ffffff25;
padding: 0.75rem 1rem;
border-radius: 1rem;
margin-bottom: 0.5rem;
color: #fff;
font-weight: 500;
text-align: left;
width: fit-content;
max-width: 90%;
align-self: flex-end;
}
.chat-bubble-bot {
background-color: #ffffff15;
padding: 0.75rem 1rem;
border-radius: 1rem;
margin-bottom: 0.5rem;
color: #fff;
text-align: left;
width: fit-content;
max-width: 90%;
align-self: flex-start;
}
hr {
border: 0;
height: 1px;
background: #ffffff30;
margin: 1.5rem 0;
}
</style>
""", unsafe_allow_html=True)
st.markdown("<h1>π€ Deep Learning Mentor Chat</h1>", unsafe_allow_html=True)
st.markdown("<p>Learn Deep Learning with personalized AI mentorship</p>", unsafe_allow_html=True)
# Sidebar for experience level
st.sidebar.title("π Select Your Level")
exp = st.sidebar.selectbox("Experience Level", ["Beginner", "Intermediate", "Expert"])
# Load Deep Learning model
mentor_llm = HuggingFaceEndpoint(
repo_id='Qwen/Qwen3-32B',
provider='sambanova',
temperature=0.7,
max_new_tokens=150,
task='conversational'
)
deep_mentor = ChatHuggingFace(llm=mentor_llm)
# Session key for conversation
PAGE_KEY = "deep_learning_chat_history"
if PAGE_KEY not in st.session_state:
st.session_state[PAGE_KEY] = []
# Chat input form
st.markdown("<hr>", unsafe_allow_html=True)
with st.form(key="chat_form"):
user_input = st.text_input("π¬ Ask your deep learning question:")
submit = st.form_submit_button("Send")
# Handle chat submission
if submit and user_input:
system_prompt = f"""You are a knowledgeable Deep Learning mentor with {exp} years of practical experience. Your communication style is friendly, supportive, and focused. Please adhere to the following strict instructions:
1. Only respond to queries that are specifically about deep learning programming β this includes related libraries, tools, and frameworks.
2. If a question is outside the scope of deep learning, respond exactly with: "I specialize only in deep learning programming. This appears to be a non-deep learning topic."
3. Do not offer help or advice on non-deep learning subjects.
4. Aim for clarity and practical relevance in your explanations, keeping them beginner-friendly when needed.
5. Reinforce learning through relevant code snippets and applied examples.
6. For more advanced discussions, assume the learner has a working knowledge of deep learning fundamentals."""
messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
result = deep_mentor.invoke(messages)
st.session_state[PAGE_KEY].append((user_input, result.content))
# Chat history display with bubble styling
if st.session_state[PAGE_KEY]:
st.markdown('<div class="chat-container">', unsafe_allow_html=True)
for user, bot in st.session_state[PAGE_KEY]:
st.markdown(f'<div class="chat-user">π€ <strong>You:</strong> {user}</div>', unsafe_allow_html=True)
st.markdown(f'<div class="chat-bot">π§βπ« <strong>Mentor:</strong> {bot}</div>', unsafe_allow_html=True)
st.markdown('</div>', unsafe_allow_html=True)
|