Spaces:
Runtime error
Runtime error
File size: 2,736 Bytes
c045b61 ec978d4 41a8fd5 ec978d4 41a8fd5 53b9316 ec978d4 53b9316 ec978d4 53b9316 ec978d4 53b9316 ec978d4 53b9316 c045b61 53b9316 ec978d4 f18ee53 53b9316 ec978d4 53b9316 ec978d4 53b9316 ec978d4 53b9316 ec978d4 53b9316 f18ee53 53b9316 c045b61 53b9316 |
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 |
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() |