Spaces:
Sleeping
Sleeping
import streamlit as st | |
from chatbot_utils import AmharicChatbot | |
st.set_page_config(page_title="α αα α α ααα α¨α€α α αα«αͺ", layout="centered") | |
def load_bot(): | |
return AmharicChatbot("amharic_srh_qa.csv") | |
bot = load_bot() | |
# Inject CSS for chat style | |
st.markdown(""" | |
<style> | |
.chat-container { | |
width: 100%; | |
max-width: 600px; | |
margin: 0 auto; | |
background-color: white; | |
padding: 20px; | |
border-radius: 10px; | |
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); | |
} | |
.chat-box { | |
height: 350px; | |
overflow-y: auto; | |
border: 1px solid #ddd; | |
padding: 10px; | |
background-color: #f9f9f9; | |
margin-bottom: 10px; | |
border-radius: 5px; | |
} | |
.message { | |
margin: 10px 0; | |
padding: 10px; | |
border-radius: 5px; | |
max-width: 70%; | |
word-wrap: break-word; | |
} | |
.user-message { | |
background-color: #e1f5fe; | |
align-self: flex-end; | |
margin-left: auto; | |
} | |
.bot-message { | |
background-color: #f1f1f1; | |
align-self: flex-start; | |
margin-right: auto; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
st.markdown("## π€α αα α α ααα α¨α€α α αα«αͺ", unsafe_allow_html=True) | |
st.markdown("α΅α ααα΅α α¨α α£ααα α α½α³ α₯α«α α αα΅? α₯α£αα α«ααα‘α’", unsafe_allow_html=True) | |
# Chat container and message display | |
#st.markdown('<div class="chat-container">', unsafe_allow_html=True) | |
#st.markdown('<div class="chat-box">', unsafe_allow_html=True) | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
for msg in st.session_state.messages: | |
css_class = "user-message" if msg["sender"] == "user" else "bot-message" | |
st.markdown(f'<div class="message {css_class}">{msg["text"]}</div>', unsafe_allow_html=True) | |
st.markdown('</div>', unsafe_allow_html=True) # Close chat-box | |
st.markdown('</div>', unsafe_allow_html=True) # Close chat-container | |
# Form with clear_on_submit and direct input capture | |
with st.form(key="chat_form", clear_on_submit=True): | |
user_input = st.text_input("π¬ α₯α«ααα α«α΅αα‘:") | |
submit = st.form_submit_button("ααα΅ α αα£") | |
if submit: | |
if user_input.strip() == "": | |
st.warning("α₯α£αα α₯α«α α«α΅αα‘α’") | |
else: | |
# Append user input | |
st.session_state.messages.append({"sender": "user", "text": user_input}) | |
# Generate response | |
response = bot.get_answer(user_input) | |
if response == "__OUT_OF_SCOPE__": | |
response = "αα αα³α£ αα αα α₯α«α αα΅α°αα α αα»αα©α α¨α₯α αα¨α ααͺ ααα’ α₯α£αα α αα αααα΅ αααα©α’" | |
# Append bot response | |
st.session_state.messages.append({"sender": "bot", "text": response}) | |