Spaces:
Runtime error
Runtime error
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() |