Spaces:
Build error
Build error
| 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.") |