File size: 2,919 Bytes
d1cbe41
 
 
89df51d
d1cbe41
609eb18
19da248
d1cbe41
 
91c4568
609eb18
91c4568
609eb18
 
 
 
 
8c2ca40
609eb18
8c2ca40
609eb18
 
 
8c2ca40
609eb18
8c2ca40
609eb18
8c2ca40
 
 
 
 
609eb18
 
 
 
 
 
8c2ca40
609eb18
 
 
 
8c2ca40
 
609eb18
 
 
 
91c4568
d1cbe41
609eb18
d1cbe41
609eb18
d1cbe41
609eb18
91c4568
d1cbe41
 
 
004eb6e
d1cbe41
 
 
91c4568
 
d1cbe41
 
 
004eb6e
d1cbe41
 
 
89df51d
 
 
 
 
d1cbe41
609eb18
d1cbe41
 
 
 
 
 
91c4568
609eb18
 
 
91c4568
d1cbe41
91c4568
89df51d
d1cbe41
609eb18
d1cbe41
89df51d
d1cbe41
 
91c4568
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
import streamlit as st
import os
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import HumanMessage, SystemMessage

# Load Hugging Face token from environment
hf = os.getenv('Data_science')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf

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

# --- Custom CSS Styling ---
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("🤖 GenAI Mentor Chat")

# --- Sidebar for Experience ---
st.sidebar.title("Mentor Preferences")
experience_label = st.sidebar.selectbox("Select your experience level:", ["Beginner", "Intermediate", "Expert"])

# --- Model Initialization ---
genai_skeleton = HuggingFaceEndpoint(
    repo_id='google/gemma-2-9b-it',
    provider='nebius',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)

genai_chat = ChatHuggingFace(
    llm=genai_skeleton,
    repo_id='google/gemma-2-9b-it',
    provider='nebius',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)

PAGE_KEY = "genai_chat_history"

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

# --- Chat Input ---
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 Generative AI mentor with {experience_label.lower()} expertise. "
        f"Explain concepts in a friendly tone, within 150 words. "
        f"If the question is not related to Generative AI, politely say it's out of scope."
    )
    messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
    result = genai_chat.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("---")