File size: 3,037 Bytes
6943317
 
 
b624537
6943317
1c7b251
d1c9a82
6943317
 
1c7b251
b624537
1c7b251
c4a75a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1c7b251
6943317
c4a75a2
6943317
b624537
 
 
6943317
 
1c7b251
6943317
 
 
0c2b606
6943317
 
 
1c7b251
 
6943317
 
 
cb9f607
6943317
 
 
b624537
 
 
 
 
6943317
b624537
6943317
 
 
 
 
 
1c7b251
b624537
 
 
1c7b251
6943317
1c7b251
b624537
6943317
b624537
6943317
b624537
6943317
 
1c7b251
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
import streamlit as st
import os
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import HumanMessage, SystemMessage

# Set Hugging Face tokens
hf = os.getenv('Data_science')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf

# --- Page Configuration ---
st.set_page_config(page_title="ML Mentor Chat", layout="centered")

# --- Inject Home Page CSS Styling ---
st.markdown("""
    <style>
    .main {
        background: linear-gradient(135deg, #430089 0%, #82ffa1 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;
    }
    .css-1aumxhk {
        color: white;  /* Streamlit input text color */
    }
    </style>
""", unsafe_allow_html=True)

# --- Page Title ---
st.title("🤖 Machine Learning Mentor Chat")

# --- Sidebar: Experience Level with same style ---
st.sidebar.title("Mentor Preferences")
experience_label = st.sidebar.selectbox(
    "Select your experience level:", ["Beginner", "Intermediate", "Experienced"]
)

# --- Initialize Chat Model ---
ml_model_skeleton = HuggingFaceEndpoint(
    repo_id='Qwen/Qwen3-14B',
    provider='nebius',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)

ml_mentor = ChatHuggingFace(
    llm=ml_model_skeleton,
    repo_id='Qwen/Qwen3-14B',
    provider='nebius',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)

PAGE_KEY = "ml_chat_history"

# --- Session State Initialization ---
if PAGE_KEY not in st.session_state:
    st.session_state[PAGE_KEY] = []

# --- Chat Input 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"You are a machine learning mentor with {experience_label.lower()} experience. "
        f"Answer only machine learning questions in a friendly tone and within 150 words. "
        f"Politely inform if the question is out of scope."
    )
    messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
    result = ml_mentor.invoke(messages)
    st.session_state[PAGE_KEY].append((user_input, result.content))

# --- Chat History Display ---
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("---")