File size: 4,422 Bytes
f50b5cb
 
 
 
 
 
 
 
 
 
 
 
 
0afb4fe
f50b5cb
 
 
0afb4fe
f50b5cb
f9b44c9
f50b5cb
 
0afb4fe
f50b5cb
f9b44c9
0afb4fe
 
 
 
f50b5cb
 
0afb4fe
 
f9b44c9
f50b5cb
f9b44c9
0afb4fe
f50b5cb
 
0afb4fe
 
 
 
 
 
 
 
 
 
 
f50b5cb
0afb4fe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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")

# Improved custom CSS
st.markdown("""
    <style>
    .main {
        background: linear-gradient(to right, #1f4037, #99f2c8);
        padding: 2rem;
        font-family: 'Segoe UI', sans-serif;
    }
    .stButton>button {
        background-color: #ffffff10;
        color: white;
        font-weight: 600;
        border-radius: 10px;
        padding: 0.6rem 1rem;
        transition: all 0.3s ease;
        border: 1px solid white;
    }
    .stButton>button:hover {
        background-color: #ffffff30;
        color: white;
        border-color: #fff;
    }
    h1, h3, p, label {
        color: white;
        text-align: center;
    }
    .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;
    }
    .chat-container {
        display: flex;
        flex-direction: column;
        gap: 0.5rem;
        margin-top: 2rem;
    }
    </style>
""", unsafe_allow_html=True)
# App title
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)