File size: 2,844 Bytes
cfb8f08
 
 
1ae40b2
cfb8f08
79d5f48
cfb8f08
 
48b92af
1ae40b2
48b92af
1ae40b2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48b92af
cfb8f08
1ae40b2
cfb8f08
1ae40b2
 
 
cfb8f08
1ae40b2
 
b0969a5
 
cfb8f08
9bce7b2
cfb8f08
 
1ae40b2
 
b0969a5
 
cfb8f08
1ae40b2
cfb8f08
 
 
1ae40b2
 
 
cfb8f08
1ae40b2
cfb8f08
 
 
 
1ae40b2
cfb8f08
48b92af
1ae40b2
 
 
48b92af
cfb8f08
1ae40b2
 
cfb8f08
1ae40b2
cfb8f08
1ae40b2
cfb8f08
 
48b92af
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
import streamlit as st
import os
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
from langchain_core.messages import HumanMessage, SystemMessage

hf = os.getenv('Data_science')
os.environ['HUGGINGFACEHUB_API_TOKEN'] = hf
os.environ['HF_TOKEN'] = hf

# Page config
st.set_page_config(page_title="Python Mentor Chat", layout="centered")

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

# Title
st.title("🐍 Python Mentor Chat")

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

# Initialize model
deep_seek_skeleton = HuggingFaceEndpoint(
    repo_id='mistralai/Mistral-7B-Instruct-v0.3',
    provider='novita',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)
deep_seek = ChatHuggingFace(
    llm=deep_seek_skeleton,
    repo_id='mistralai/Mistral-7B-Instruct-v0.3',
    provider='novita',
    temperature=0.7,
    max_new_tokens=50,
    task='conversational'
)

PAGE_KEY = "python_chat_history"
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"Act as a python mentor with {experience_label.lower()} experience. "
        f"Teach in a friendly manner and keep answers within 150 words. "
        f"If a question is not about python, politely mention it's out of scope."
    )
    messages = [SystemMessage(content=system_prompt), HumanMessage(content=user_input)]
    result = deep_seek.invoke(messages)
    st.session_state[PAGE_KEY].append((user_input, result.content))

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