arahrooh commited on
Commit
272b3bb
·
1 Parent(s): 086ffee

Fix app.py for Hugging Face Spaces - add module-level demo

Browse files
Files changed (1) hide show
  1. app.py +50 -6
app.py CHANGED
@@ -645,12 +645,19 @@ def main():
645
  # Create and launch Gradio interface
646
  demo = create_interface(bot)
647
 
648
- logger.info(f"Launching Gradio interface on http://{args.server_name}:{args.server_port}")
649
- demo.launch(
650
- server_name=args.server_name,
651
- server_port=args.server_port,
652
- share=args.share
653
- )
 
 
 
 
 
 
 
654
 
655
  except KeyboardInterrupt:
656
  logger.info("Interrupted by user")
@@ -660,5 +667,42 @@ def main():
660
  sys.exit(1)
661
 
662
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
663
  if __name__ == "__main__":
664
  main()
 
645
  # Create and launch Gradio interface
646
  demo = create_interface(bot)
647
 
648
+ # For Hugging Face Spaces, just return the demo (they handle launching)
649
+ # For local use, launch it
650
+ if os.getenv("SPACE_ID") or os.getenv("SYSTEM") == "spaces":
651
+ # Running on Hugging Face Spaces - return demo for Spaces to launch
652
+ return demo
653
+ else:
654
+ # Running locally
655
+ logger.info(f"Launching Gradio interface on http://{args.server_name}:{args.server_port}")
656
+ demo.launch(
657
+ server_name=args.server_name,
658
+ server_port=args.server_port,
659
+ share=args.share
660
+ )
661
 
662
  except KeyboardInterrupt:
663
  logger.info("Interrupted by user")
 
667
  sys.exit(1)
668
 
669
 
670
+ # For Hugging Face Spaces: create demo at module level
671
+ # Spaces will import this module and look for a 'demo' variable
672
+ def create_demo_for_spaces():
673
+ """Create demo for Hugging Face Spaces"""
674
+ try:
675
+ # Initialize with default args for Spaces
676
+ parser = argparse.ArgumentParser()
677
+ parser.add_argument('--model', type=str, default='meta-llama/Llama-3.2-3B-Instruct')
678
+ parser.add_argument('--vector-db-dir', default='./chroma_db')
679
+ parser.add_argument('--data-dir', default='./Data Resources')
680
+ parser.add_argument('--max-new-tokens', type=int, default=1024)
681
+ parser.add_argument('--temperature', type=float, default=0.2)
682
+ parser.add_argument('--top-p', type=float, default=0.9)
683
+ parser.add_argument('--repetition-penalty', type=float, default=1.1)
684
+ parser.add_argument('--k', type=int, default=5)
685
+ parser.add_argument('--skip-indexing', action='store_true', default=True)
686
+ parser.add_argument('--verbose', action='store_true', default=False)
687
+ parser.add_argument('--share', action='store_true', default=False)
688
+ parser.add_argument('--server-name', type=str, default='0.0.0.0')
689
+ parser.add_argument('--server-port', type=int, default=7860)
690
+ parser.add_argument('--seed', type=int, default=42)
691
+
692
+ args = parser.parse_args([]) # Empty args for Spaces
693
+ bot = RAGBot(args)
694
+ return create_interface(bot)
695
+ except Exception as e:
696
+ logger.error(f"Error creating demo for Spaces: {e}", exc_info=True)
697
+ # Return a simple error demo
698
+ with gr.Blocks() as error_demo:
699
+ gr.Markdown(f"# Error Initializing Chatbot\n\nAn error occurred: {str(e)}")
700
+ return error_demo
701
+
702
+ # Create demo at module level for Hugging Face Spaces
703
+ # This is what Spaces will import and use
704
+ demo = create_demo_for_spaces()
705
+
706
+ # For local execution
707
  if __name__ == "__main__":
708
  main()