Walelign's picture
Upload 2 files
0e5c52a verified
import streamlit as st
from chatbot_utils import AmharicChatbot
st.set_page_config(page_title="α‰…αˆ˜αˆ α‰ αŠ αˆ›αˆ­αŠ› α‹¨αŒ€αŠ“ αŠ αˆ›αŠ«αˆͺ", layout="centered")
@st.cache_resource
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})