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)