import streamlit as st import random import re # Configure page st.set_page_config( page_title="Nepali Chatbot", page_icon="ЁЯЗ│ЁЯЗ╡", layout="centered" ) class SimpleNepaliChatbot: def __init__(self): self.english_responses = { "greeting": [ "Hello! How are you today?", "Hi there! Nice to meet you!", "Hey! How can I help you?", "Hello! What would you like to talk about?" ], "how_are_you": [ "I'm doing great, thank you for asking! How about you?", "I'm fine, thanks! How are things with you?", "I'm well! What brings you here today?" ], "name": [ "I'm your friendly Nepali chatbot! You can call me Bot.", "I'm a chatbot designed to chat in Nepali and English!", "My name is NepaliBot. Nice to meet you!" ], "goodbye": [ "Goodbye! Have a wonderful day!", "See you later! Take care!", "Bye! It was nice chatting with you!" ], "nepal": [ "Nepal is a beautiful country in the Himalayas!", "I love talking about Nepal! What would you like to know?", "Nepal has amazing mountains, culture, and people!" ], "default": [ "That's interesting! Tell me more about it.", "I see! What else would you like to talk about?", "Thanks for sharing! How does that make you feel?", "That's a good point. What do you think about it?", "I understand. Can you elaborate on that?" ] } self.nepali_responses = { "greeting": [ "рдирдорд╕реНрддреЗ! рддрдкрд╛рдИрдВ рдХрд╕реНрддреЛ рд╣реБрдиреБрд╣реБрдиреНрдЫ?", "рдирдорд╕реНрдХрд╛рд░! рддрдкрд╛рдИрдВрд▓рд╛рдИ рднреЗрдЯреЗрд░ рдЦреБрд╢реА рд▓рд╛рдЧреНрдпреЛ!", "рд╣рд╛рд▓ рдХрд╕реНрддреЛ рдЫ? рдо рдХрд╕рд░реА рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫреБ?", "рдирдорд╕реНрддреЗ! рдХреЗ рдХреБрд░рд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ?" ], "how_are_you": [ "рдо рд╕рдЮреНрдЪреИ рдЫреБ, рдзрдиреНрдпрд╡рд╛рдж! рддрдкрд╛рдИрдВ рдХрд╕реНрддреЛ рд╣реБрдиреБрд╣реБрдиреНрдЫ?", "рдо рд░рд╛рдореНрд░реЛ рдЫреБ! рддрдкрд╛рдИрдВрдХреЛ рд╣рд╛рд▓ рдХрд╕реНрддреЛ рдЫ?", "рдо рдард┐рдХреИ рдЫреБ! рдЖрдЬ рдХреЗ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ?" ], "name": [ "рдо рддрдкрд╛рдИрдВрдХреЛ рдиреЗрдкрд╛рд▓реА рдЪреНрдпрд╛рдЯрдмреЛрдЯ рд╣реБрдБ! рдорд▓рд╛рдИ рдмреЛрдЯ рднрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред", "рдо рдПрдХ рдЪреНрдпрд╛рдЯрдмреЛрдЯ рд╣реБрдБ рдЬрд╕рд▓реЗ рдиреЗрдкрд╛рд▓реА рд░ рдЕрдВрдЧреНрд░реЗрдЬреА рджреБрд╡реИрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдЫреБ!", "рдореЗрд░реЛ рдирд╛рдо рдиреЗрдкрд╛рд▓реАрдмреЛрдЯ рд╣реЛред рддрдкрд╛рдИрдВрд▓рд╛рдИ рднреЗрдЯреЗрд░ рдЦреБрд╢реА рд▓рд╛рдЧреНрдпреЛ!" ], "goodbye": [ "рдирдорд╕реНрдХрд╛рд░! рд░рд╛рдореНрд░реЛ рджрд┐рди рдмрд┐рддрд╛рдЙрдиреБрд╣реЛрд╕реН!", "рдлреЗрд░рд┐ рднреЗрдЯреМрдВрд▓рд╛! рдЦреНрдпрд╛рд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН!", "рдмрд╛рдЗ рдмрд╛рдЗ! рддрдкрд╛рдИрдВрд╕рдБрдЧ рдХреБрд░рд╛ рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рд▓рд╛рдЧреНрдпреЛ!" ], "nepal": [ "рдиреЗрдкрд╛рд▓ рд╣рд┐рдорд╛рд▓рдпрдХреЛ рдПрдХ рд╕реБрдиреНрджрд░ рджреЗрд╢ рд╣реЛ!", "рдорд▓рд╛рдИ рдиреЗрдкрд╛рд▓рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрди рдорди рдкрд░реНрдЫ! рдХреЗ рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ?", "рдиреЗрдкрд╛рд▓рдорд╛ рдЕрджреНрднреБрдд рдкрд╣рд╛рдбрд╣рд░реВ, рд╕рдВрд╕реНрдХреГрддрд┐ рд░ рдорд╛рдирд┐рд╕рд╣рд░реВ рдЫрдиреН!" ], "default": [ "рддреНрдпреЛ рд░реЛрдЪрдХ рдЫ! рдорд▓рд╛рдИ рдердк рдмрддрд╛рдЙрдиреБрд╣реЛрд╕реНред", "рдмреБрдЭреЗ! рдЕрд░реВ рдХреЗ рдХреБрд░рд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ?", "рдзрдиреНрдпрд╡рд╛рдж рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреБрднрдПрдХреЛрдорд╛! рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╕реНрддреЛ рд▓рд╛рдЧреНрдЫ?", "рд░рд╛рдореНрд░реЛ рдХреБрд░рд╛ рд╣реЛред рддрдкрд╛рдИрдВ рдХреЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ?", "рдмреБрдЭреЗрдВред рдпрд╕рдмрд╛рд░реЗ рдЕрд▓рд┐ рд╡рд┐рд╕реНрддрд╛рд░рдорд╛ рднрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ?" ] } def is_nepali_text(self, text): return bool(re.search(r'[\u0900-\u097F]', text)) def get_response_type(self, message): message_lower = message.lower() # Pattern matching if re.search(r'\b(hello|hi|hey|namaste|namaskar)\b|рдирдорд╕реНрддреЗ|рдирдорд╕реНрдХрд╛рд░|рд╣рд╛рд▓|рд╣рд▓реЛ', message_lower): return "greeting" elif re.search(r'\b(how are you|kasto cha)\b|рдХрд╕реНрддреЛ рдЫ|рдХрд╕реНрддреЛ рд╣реБрдиреБрд╣реБрдиреНрдЫ', message_lower): return "how_are_you" elif re.search(r'\b(name|naam|who)\b|рдирд╛рдо|рдХреЛ рд╣реЛ', message_lower): return "name" elif re.search(r'\b(bye|goodbye|jaau)\b|рдмрд╛рдЗ|рдЬрд╛рдЙрдБ', message_lower): return "goodbye" elif re.search(r'\b(nepal|nepali)\b|рдиреЗрдкрд╛рд▓', message_lower): return "nepal" else: return "default" def generate_response(self, message): if not message.strip(): return "Please say something!" is_nepali = self.is_nepali_text(message) response_type = self.get_response_type(message) if is_nepali: responses = self.nepali_responses.get(response_type, self.nepali_responses["default"]) else: responses = self.english_responses.get(response_type, self.english_responses["default"]) return random.choice(responses) # Initialize chatbot if 'chatbot' not in st.session_state: st.session_state.chatbot = SimpleNepaliChatbot() if 'messages' not in st.session_state: st.session_state.messages = [ {"role": "assistant", "content": "рдирдорд╕реНрддреЗ! Hello! I'm your Nepali chatbot. рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╕рд░реА рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫреБ?"} ] # UI st.title("ЁЯЗ│ЁЯЗ╡ рдиреЗрдкрд╛рд▓реА рдЪреНрдпрд╛рдЯрдмреЛрдЯ") st.markdown("**Simple Nepali Chatbot - рдиреЗрдкрд╛рд▓реАрдорд╛ рд╡рд╛ рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛ рдХреБрд░рд╛рдХрд╛рдиреА рдЧрд░реНрдиреБрд╣реЛрд╕реН!**") # Display chat history for message in st.session_state.messages: with st.chat_message(message["role"]): st.write(message["content"]) # Input if prompt := st.chat_input("рдпрд╣рд╛рдБ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН / Type here..."): # Add user message st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.write(prompt) # Generate bot response response = st.session_state.chatbot.generate_response(prompt) st.session_state.messages.append({"role": "assistant", "content": response}) with st.chat_message("assistant"): st.write(response) # Sidebar with examples st.sidebar.header("ЁЯФД Try these examples:") examples = [ "рдирдорд╕реНрддреЗ!", "Hello!", "рддрдкрд╛рдИрдВрдХреЛ рдирд╛рдо рдХреЗ рд╣реЛ?", "How are you?", "рдХрд╕реНрддреЛ рдЫ?", "Tell me about Nepal", "рдзрдиреНрдпрд╡рд╛рдж!" ] for example in examples: if st.sidebar.button(example): st.session_state.messages.append({"role": "user", "content": example}) response = st.session_state.chatbot.generate_response(example) st.session_state.messages.append({"role": "assistant", "content": response}) st.rerun() if st.sidebar.button("ЁЯЧСя╕П Clear Chat"): st.session_state.messages = [ {"role": "assistant", "content": "рдирдорд╕реНрддреЗ! Hello! I'm your Nepali chatbot. рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╕рд░реА рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫреБ?"} ] st.rerun() st.sidebar.markdown("---") st.sidebar.info("This chatbot uses simple pattern matching to respond in Nepali and English.")