File size: 3,101 Bytes
54c32b3
f9807fc
 
 
de80335
f9807fc
 
 
 
 
 
 
c34798a
60682c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
de80335
60682c0
 
c34798a
54b78c7
 
c34798a
60682c0
 
 
 
 
 
 
c34798a
 
60682c0
0e5c52a
 
 
60682c0
 
0e5c52a
 
 
 
 
 
e7f9460
0e5c52a
 
 
 
e7f9460
0e5c52a
 
db8ea7d
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

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})