waleedmohd's picture
Update app.py
41a8fd5 verified
raw
history blame
2.74 kB
import gradio as gr
import re
import json
import time
from datetime import datetime
# Corrected Simple language detection function
def simple_detect_language(text):
arabic_pattern = re.compile(r'[Ø€-Û¿]+') # Fixed Arabic character range
return "ar" if arabic_pattern.search(text) else "en"
# Placeholder customer service functions
def get_enhanced_response(intent, lang, name=""):
responses = {
"balance": {"ar": "رصيدك هو 1000 جنيه سوداني.", "en": "Your balance is 1000 SDG."},
"lost_card": {"ar": "يرجى الاتصال بالبنك فورًا للإبلاغ عن بطاقة مفقودة.", "en": "Please contact the bank immediately to report a lost card."}
}
return responses.get(intent, {}).get(lang, "I'm not sure how to answer that.")
def log_interaction(user_message, bot_response, intent, language):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
log_entry = {"timestamp": timestamp, "user_message": user_message, "bot_response": bot_response, "intent": intent, "language": language}
with open("/mnt/data/chat_logs.jsonl", "a") as f:
f.write(json.dumps(log_entry) + "\n")
# Intent classification function
def classify_intent(message):
keywords = {
"balance": ["balance", "رصيد"],
"lost_card": ["lost", "card", "بطاقة", "ضائعة"]
}
for intent, words in keywords.items():
if any(word in message.lower() for word in words):
return intent
return "unknown"
# Response function
def respond(message):
language = simple_detect_language(message)
intent = classify_intent(message)
response = get_enhanced_response(intent, language)
log_interaction(message, response, intent, language)
return response
# Chat interface with Gradio
def chatbot_interface(user_input, chat_history):
if not user_input.strip():
return "", chat_history
response = respond(user_input)
chat_history.append(("User", user_input))
chat_history.append(("Bot", response))
return "", chat_history
# Gradio UI
with gr.Blocks() as demo:
gr.Markdown("# Banking Chatbot")
chat_history = gr.State([])
chatbot = gr.Chatbot()
user_input = gr.Textbox(placeholder="Type your message...")
send_btn = gr.Button("Send")
send_btn.click(fn=chatbot_interface, inputs=[user_input, chat_history], outputs=[user_input, chatbot])
user_input.submit(fn=chatbot_interface, inputs=[user_input, chat_history], outputs=[user_input, chatbot])
if __name__ == "__main__":
demo.launch()