File size: 3,093 Bytes
bcf74cc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import random
import re

# Page config
st.set_page_config(
    page_title="Nepali Chatbot",
    page_icon="🇳🇵"
)

# Simple responses
nepali_greetings = ["नमस्ते! कस्तो छ?", "नमस्कार! राम्रो छु।", "हाल कस्तो छ?"]
english_greetings = ["Hello! How are you?", "Hi there!", "Hey! How's it going?"]

nepali_responses = [
    "त्यो राम्रो छ!", 
    "बुझें। अरू के भन्न चाहनुहुन्छ?",
    "धन्यवाद साझा गर्नुभएकोमा!",
    "त्यो दिलचस्प छ!"
]

english_responses = [
    "That's great!",
    "I understand. What else would you like to say?",
    "Thanks for sharing!",
    "That's interesting!"
]

def is_nepali(text):
    return bool(re.search(r'[\u0900-\u097F]', text))

def get_response(message):
    if not message:
        return "Please say something!"
    
    message_lower = message.lower()
    
    # Check for greetings
    if any(word in message_lower for word in ["hello", "hi", "hey"]) or "नमस्ते" in message or "नमस्कार" in message:
        return random.choice(nepali_greetings if is_nepali(message) else english_greetings)
    
    # Regular responses
    if is_nepali(message):
        return random.choice(nepali_responses)
    else:
        return random.choice(english_responses)

# Title
st.title("🇳🇵 Simple Nepali Chatbot")
st.write("**Chat in Nepali or English! / नेपाली वा अंग्रेजीमा कुरा गर्नुहोस्!**")

# Initialize chat history
if "messages" not in st.session_state:
    st.session_state.messages = []

# Display chat messages
for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.write(message["content"])

# Chat 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 response
    response = get_response(prompt)
    st.session_state.messages.append({"role": "assistant", "content": response})
    with st.chat_message("assistant"):
        st.write(response)

# Sidebar with examples
with st.sidebar:
    st.header("Examples / उदाहरण")
    
    if st.button("नमस्ते!"):
        st.session_state.messages.append({"role": "user", "content": "नमस्ते!"})
        st.session_state.messages.append({"role": "assistant", "content": get_response("नमस्ते!")})
        st.rerun()
    
    if st.button("Hello!"):
        st.session_state.messages.append({"role": "user", "content": "Hello!"})
        st.session_state.messages.append({"role": "assistant", "content": get_response("Hello!")})
        st.rerun()
    
    if st.button("Clear / सफा गर्नुहोस्"):
        st.session_state.messages = []
        st.rerun()