File size: 2,800 Bytes
0c366f9
 
 
03f4602
0c366f9
03f4602
eee2af9
0c366f9
 
4548f13
03f4602
4548f13
03f4602
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4548f13
0c366f9
03f4602
0c366f9
03f4602
0c366f9
03f4602
4548f13
a896781
 
0c366f9
 
 
 
 
4548f13
 
a896781
 
0c366f9
 
 
 
 
03f4602
 
 
 
0c366f9
03f4602
0c366f9
 
 
 
03f4602
0c366f9
4548f13
03f4602
 
 
4548f13
0c366f9
4548f13
03f4602
0c366f9
03f4602
0c366f9
03f4602
0c366f9
 
4548f13
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

# Set environment variables
hf = os.getenv('Data_science')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf

# Page setup
st.set_page_config(page_title="SQL Mentor Chat", layout="centered")

# Inject homepage-style CSS
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;
    }
    </style>
""", unsafe_allow_html=True)

# Page title
st.title("๐Ÿ—ƒ๏ธ SQL Mentor Chat")

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

# Initialize model
sql_model_skeleton = HuggingFaceEndpoint(
    repo_id='HuggingFaceH4/zephyr-7b-beta',
    provider='hf-inference',
    temperature=0.7,
    max_new_tokens=110,
    task='conversational'
)

sql_mentor = ChatHuggingFace(
    llm=sql_model_skeleton,
    repo_id='HuggingFaceH4/zephyr-7b-beta',
    provider='hf-inference',
    temperature=0.7,
    max_new_tokens=110,
    task='conversational'
)

# Session key
PAGE_KEY = "chat_history_sql"
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")

# Handle query
if submit and user_input:
    system_prompt = (
        f"Act as a SQL mentor with {exp.lower()} expertise. "
        f"Answer in a friendly tone and within 150 words. "
        f"If the question is not SQL-related, politely say it's out of scope."
    )
    messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
    result = sql_mentor.invoke(messages)
    st.session_state[PAGE_KEY].append((user_input, result.content))

# Show 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("---")