waleedmohd's picture
Update app.py
cd2bc8b verified
raw
history blame
4.32 kB
import gradio as gr
from huggingface_hub import InferenceClient
import logging # For analytics
# Use Arabic-optimized model
client = InferenceClient("aubmindlab/aragpt2-base")
# Omdurman National Bank-specific guidelines
ONB_GUIDELINES = {
"balance": "يمكنك التحقق من رصيدك عبر الإنترنت أو عبر تطبيق الهاتف الخاص ببنك أم درمان الوطني.",
"lost_card": "في حالة فقدان البطاقة، اتصل بالرقم 249-123-456-789 فورًا.",
"loan": "شروط القرض تشمل الحد الأدنى للدخل (5000 جنيه سوداني) وتاريخ ائتماني جيد.",
"transfer": "لتحويل الأموال، استخدم تطبيق الهاتف أو الخدمة المصرفية عبر الإنترنت.",
"new_account": "لفتح حساب جديد، قم بزيارة أقرب فرع مع جواز سفرك أو هويتك الوطنية.",
"interest_rates": "أسعار الفائدة على الودائع تتراوح بين 5% إلى 10% سنويًا.",
"branches": "فروعنا موجودة في أم درمان، الخرطوم، وبورتسودان. زيارة موقعنا للتفاصيل.",
"working_hours": "ساعات العمل من 8 صباحًا إلى 3 مساءً من الأحد إلى الخميس.",
"contact": "الاتصال بنا على الرقم 249-123-456-789 أو عبر البريد الإلكتروني [email protected]."
}
# Sudanese dialect examples
SUDANESE_EXAMPLES = {
"أزهريتك؟": "أهلاً وسهلاً! كيف يمكنني مساعدتك اليوم؟",
"شبيك؟": "أنا بخير، شكراً! كيف يمكنني مساعدتك؟",
"فين الفرع؟": "أقرب فرع موجود في أم درمان، الخرطوم، وبورتسودان."
}
# Set up logging for analytics
logging.basicConfig(filename='chatbot_queries.log', level=logging.INFO)
def respond(
message: str,
history: list[list[str]],
system_message="أنت مساعد مصرفي لبنك أم درمان الوطني. قدم معلومات عامة فقط.",
max_tokens=256,
temperature=0.5,
top_p=0.9,
):
# Log the query
logging.info(f"Query: {message}")
# Check for Sudanese dialect phrases
if message in SUDANESE_EXAMPLES:
yield SUDANESE_EXAMPLES[message]
return
# Force Arabic responses
prompt = f"باللغة العربية: {message}"
# Format history in messages format
messages = [{"role": "system", "content": system_message}]
for user_msg, bot_msg in history:
if user_msg:
messages.append({"role": "user", "content": user_msg})
if bot_msg:
messages.append({"role": "assistant", "content": bot_msg})
messages.append({"role": "user", "content": prompt})
# Generate Arabic response
response = ""
for chunk in client.text_generation(
prompt=prompt,
max_new_tokens=max_tokens,
stream=True,
temperature=temperature,
repetition_penalty=1.2,
):
response += chunk
yield response
# Omdurman National Bank-specific interface
with gr.Blocks(css=".gradio-container {direction: rtl;}") as demo:
gr.Markdown("# <center>بنك أم درمان الوطني - المساعد المصرفي</center>")
with gr.Tab("المحادثة"):
chatbot = gr.ChatInterface(
respond,
examples=[
"كيف يمكنني التحقق من رصيدي؟", # Check balance
"أريد الإبلاغ عن فقدان بطاقتي", # Report lost card
"ما هي شروط الحصول على قرض؟", # Loan eligibility
"ما هي ساعات العمل؟", # Working hours
"أين يوجد أقرب فرع؟" # Branch locations
]
)
with gr.Tab("الإرشادات المصرفية"):
gr.Markdown("## إرشادات بنك أم درمان الوطني")
for key, value in ONB_GUIDELINES.items():
gr.Markdown(f"**{key.capitalize()}**: {value}")
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=True # Enable public link
)