Spaces:
Running
Running
File size: 3,733 Bytes
07578c1 2b22a92 07578c1 2b22a92 07578c1 84fa53d 07578c1 |
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 |
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('HF_TOKEN')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf
# --- Page Config ---
st.set_page_config(page_title="GenAI Mentor", layout="wide")
# --- Custom CSS Styling ---
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;
border: none;
border-radius: 10px;
transition: 0.3s ease;
}
.stButton>button:hover {
background-color: #5300e8;
}
.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;
}
hr {
border: 0;
height: 1px;
background: #ffffff30;
margin: 1.5rem 0;
}
</style>
""", unsafe_allow_html=True)
# --- Title ---
st.title("🤖 GenAI Mentor Chat")
st.markdown("<p style='font-size:18px;'>Empowering your AI journey—one question at a time.</p>", unsafe_allow_html=True)
# --- Sidebar ---
st.sidebar.title("Mentor Preferences")
experience_label = st.sidebar.selectbox("Choose 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=150,
task='conversational'
)
genai_chat = ChatHuggingFace(
llm=genai_skeleton,
repo_id='google/gemma-2-9b-it',
provider='nebius',
temperature=0.7,
max_new_tokens=150,
task='conversational'
)
# --- Session Key ---
PAGE_KEY = "genai_chat_history"
if PAGE_KEY not in st.session_state:
st.session_state[PAGE_KEY] = []
# --- Chat Form ---
with st.form(key="chat_form"):
st.markdown("#### 💬 Ask your question:")
user_input = st.text_input("", placeholder="Type your Generative AI question here...")
submit = st.form_submit_button("Send")
# --- Handle Submission ---
if submit and user_input:
system_prompt = (
f"Act as a Generative AI mentor with {experience_label} 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("🗨️ Conversation History")
for user, bot in reversed(st.session_state[PAGE_KEY]):
st.markdown(f"""
<div class="chat-box">
<div class="user-msg">🧑💻 <strong>You:</strong> {user}</div>
<div class="bot-msg">🤖 <strong>Mentor:</strong> {bot}</div>
</div>
""", unsafe_allow_html=True)
|