Sazid2 commited on
Commit
7d41f1f
·
verified ·
1 Parent(s): 570d100

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -63
app.py CHANGED
@@ -510,69 +510,83 @@ def chat_logic(
510
 
511
  # ---------------------- Gradio UI ----------------------
512
 
513
- with gr.Blocks(title=APP_NAME, theme="soft") as demo:
514
- gr.Markdown(
515
- """
516
- # 🧭 জাজাবৰ – SEBA অসমীয়া ক্লাছ ১০ AI Tutor
517
-
518
- - 📘 SEBA ক্লাছ ১০ পাঠ্যপুথিৰ ওপৰত ভিত্তি কৰি উত্তৰ
519
- - 🗣️ টেক্স্ট + ছবি (OCR) ইনপুট
520
- - 🧮 গণিত প্ৰশ্নৰ ধাপ-ধাপে সমাধান
521
- - 👤 ইউজাৰ লগিন + প্ৰগতি (progress) সংৰক্ষণ
522
- """
523
- )
524
-
525
- user_state = gr.State({})
526
 
527
- with gr.Row():
528
- with gr.Column(scale=1):
529
- gr.Markdown("### 👤 লগিন")
530
- username_inp = gr.Textbox(
531
- label="নাম / ইউজাৰ আইডি",
532
- placeholder="উদাহৰণ: abu10, student01 ...",
533
- )
534
- login_btn = gr.Button("✅ Login / লগিন")
535
- stats_md = gr.Markdown("এতিয়ালৈকে লগিন হোৱা নাই।", elem_classes="stats-box")
536
-
537
- gr.Markdown(
538
- """
539
- ### 💡 টিপছ
540
- - "ক্লাছ ১০ গণিত: উদাহৰণ ৩.১ প্ৰশ্ন ২" – এই ধৰণৰ প্ৰশ্ন ভাল
541
- - ফটো আপলোড কৰিলে টেক্স্টটো OCR কৰি পঢ়িব চেষ্টা কৰা হয়
542
- - সম্ভব হলে প্ৰশ্নটো অসমীয়াত সোধক 🙂
543
- """
544
- )
545
-
546
- with gr.Column(scale=3):
547
- chat = gr.Chatbot(label="জাজাবৰ সৈতে কথোপকথন", height=500)
548
-
549
- text_inp = gr.Textbox(
550
- label="আপোনাৰ প্ৰশ্ন লিখক",
551
- placeholder="উদাহৰণ: \"ক্লাছ ১০ অসমীয়া: অনুচ্ছেদ পাঠ ১ ৰ মূল বিষয় কি?\"",
552
- lines=2,
553
- )
554
-
555
- with gr.Row():
556
- # Use a gr.Image type compatible with this Gradio version: 'filepath' or 'pil' or 'numpy'
557
- # 'filepath' returns a string path in Spaces; code above handles it.
558
- image_inp = gr.Image(label="📷 প্ৰশ্নৰ ছবি (Optional)", type="filepath")
559
- audio_inp = gr.Audio(label="🎙️ কণ্ঠস্বৰ প্ৰশ্ন (Stub — not used now)", type="numpy")
560
-
561
- with gr.Row():
562
- ask_btn = gr.Button("🤖 জাজাবৰক সোধক")
563
-
564
- login_btn.click(login_user, inputs=[username_inp, user_state], outputs=[user_state, stats_md])
565
-
566
- def wrapped_chat(text, image, audio, history, user_state_inner, username_inner):
567
- if user_state_inner and username_inner and not user_state_inner.get("username"):
568
- user_state_inner["username"] = username_inner
569
- return chat_logic(username_inner, text, image, audio, history, user_state_inner)
570
-
571
- ask_btn.click(
572
- wrapped_chat,
573
- inputs=[text_inp, image_inp, audio_inp, chat, user_state, username_inp],
574
- outputs=[chat, user_state, gr.State(None)],
575
- )
576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
577
 
578
- demo.queue(concurrency_count=4).launch(server_name="0.0.0.0")
 
 
 
 
 
 
 
 
 
 
 
 
510
 
511
  # ---------------------- Gradio UI ----------------------
512
 
513
+ # Wrap UI creation + launch in try/except so runtime errors are logged clearly
514
+ import traceback
 
 
 
 
 
 
 
 
 
 
 
515
 
516
+ try:
517
+ with gr.Blocks(title=APP_NAME, theme="soft") as demo:
518
+ gr.Markdown(
519
+ """
520
+ # 🧭 জাজাবৰ – SEBA অসমীয়া ক্লাছ ১০ AI Tutor
521
+
522
+ - 📘 SEBA ক্লাছ ১০ পাঠ্যপুথিৰ ওপৰত ভিত্তি কৰি উত্তৰ
523
+ - 🗣️ টেক্স্ট + ছবি (OCR) ইনপুট
524
+ - 🧮 গণিত প্ৰশ্নৰ ধাপ-ধাপে সমাধান
525
+ - 👤 ইউজাৰ লগিন + প্ৰগতি (progress) সংৰক্ষণ
526
+ """
527
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
528
 
529
+ user_state = gr.State({})
530
+
531
+ with gr.Row():
532
+ with gr.Column(scale=1):
533
+ gr.Markdown("### 👤 লগিন")
534
+ username_inp = gr.Textbox(
535
+ label="নাম / ইউজাৰ আইডি",
536
+ placeholder="উদাহৰণ: abu10, student01 ...",
537
+ )
538
+ login_btn = gr.Button("✅ Login / লগিন")
539
+ stats_md = gr.Markdown("এতিয়ালৈকে লগিন হোৱা নাই।", elem_classes="stats-box")
540
+
541
+ gr.Markdown(
542
+ """
543
+ ### 💡 টিপছ
544
+ - "ক্লাছ ১০ গণিত: উদাহৰণ ৩.১ প্ৰশ্ন ২" – এই ধৰণৰ প্ৰশ্ন ভাল
545
+ - ফটো আপলোড করলে ট���ক্স্টটো OCR কৰি পঢ়িব চেষ্টা কৰা হয়
546
+ - সম্ভব হলে প্ৰশ্নটো অসমীয়াত সোধক 🙂
547
+ """
548
+ )
549
+
550
+ with gr.Column(scale=3):
551
+ chat = gr.Chatbot(label="জাজাবৰ সৈতে কথোপকথন", height=500)
552
+
553
+ text_inp = gr.Textbox(
554
+ label="আপোনাৰ প্ৰশ্ন লিখক",
555
+ placeholder="উদাহৰণ: \"ক্লাছ ১০ অসমীয়া: অনুচ্ছেদ পাঠ ১ ৰ মূল বিষয় কি?\"",
556
+ lines=2,
557
+ )
558
+
559
+ with gr.Row():
560
+ # Use a gr.Image type compatible with this Gradio version: 'filepath' or 'pil' or 'numpy'
561
+ # 'filepath' returns a string path in Spaces; code above handles it.
562
+ image_inp = gr.Image(label="📷 প্ৰশ্নৰ ছবি (Optional)", type="filepath")
563
+ audio_inp = gr.Audio(label="🎙️ কণ্ঠস্বৰ প্ৰশ্ন (Stub — not used now)", type="numpy")
564
+
565
+ with gr.Row():
566
+ ask_btn = gr.Button("🤖 জাজাবৰক সোধক")
567
+
568
+ login_btn.click(login_user, inputs=[username_inp, user_state], outputs=[user_state, stats_md])
569
+
570
+ def wrapped_chat(text, image, audio, history, user_state_inner, username_inner):
571
+ if user_state_inner and username_inner and not user_state_inner.get("username"):
572
+ user_state_inner["username"] = username_inner
573
+ return chat_logic(username_inner, text, image, audio, history, user_state_inner)
574
+
575
+ ask_btn.click(
576
+ wrapped_chat,
577
+ inputs=[text_inp, image_inp, audio_inp, chat, user_state, username_inp],
578
+ outputs=[chat, user_state, gr.State(None)],
579
+ )
580
 
581
+ # Remove explicit server_name (Spaces provides proper host). Launch normally.
582
+ demo.queue(concurrency_count=4).launch()
583
+
584
+ except Exception as e:
585
+ # Write full traceback to a file for debugging in Spaces logs and print to stdout
586
+ tb = traceback.format_exc()
587
+ print("--- Exception during UI startup ---")
588
+ print(tb)
589
+ with open("startup_error.log", "w") as f:
590
+ f.write(tb)
591
+ # Re-raise so the container shows the failure (useful for CI/Spaces logs)
592
+ raise