""" PANSEA University Requirements Assistant - Gradio Version (Modular) A comprehensive tool for navigating university admission requirements across Southeast Asia. """ import gradio as gr import os import sys from datetime import datetime # Add the current directory to Python path for imports sys.path.append(os.path.dirname(os.path.abspath(__file__))) # Import our RAG system from utils.rag_system import DocumentIngestion, RAGSystem # Import modular tab components from tabs.initialize import create_initialize_tab from tabs.upload import create_upload_tab from tabs.query import create_query_tab from tabs.manage import create_manage_tab from tabs.help import create_help_tab def create_interface(): """Create the main Gradio interface using modular components""" # Global state management - shared across all tabs global_vars = { 'doc_ingestion': None, 'rag_system': None, 'vectorstore': None } # Custom CSS for better styling custom_css = """ .gradio-container { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } .tab-nav button { font-weight: 500; font-size: 14px; } .tab-nav button[aria-selected="true"] { background: linear-gradient(45deg, #1e3a8a, #3b82f6); color: white; } .feedback-box { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px; margin: 8px 0; } .success-message { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; padding: 12px; border-radius: 6px; margin: 8px 0; } .error-message { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; padding: 12px; border-radius: 6px; margin: 8px 0; } """ # Create the main interface with gr.Blocks( title="🌏 PANSEA University Assistant", theme=gr.themes.Soft( primary_hue="blue", secondary_hue="slate" ), css=custom_css, analytics_enabled=False ) as interface: # Header gr.Markdown(""" # 🌏 TopEdu **Navigate University Admission Requirements Across Southeast Asia with AI-Powered Assistance** Upload university documents, ask questions, and get intelligent answers about admission requirements, programs, deadlines, and more across Southeast Asian universities. --- """) # Main tabs using modular components with gr.Tabs(): create_initialize_tab(global_vars) create_upload_tab(global_vars) create_query_tab(global_vars) create_manage_tab(global_vars) create_help_tab(global_vars) # Footer gr.Markdown(f""" --- **🔧 System Status**: Ready | **📅 Session**: {datetime.now().strftime('%Y-%m-%d %H:%M')} | **🔄 Version**: Modular Gradio 💡 **Tip**: Start by initializing the system, then upload your university documents, and begin querying! """) return interface def main(): """Launch the application""" interface = create_interface() # Launch configuration interface.launch( share=False, # Set to True for public sharing server_name="0.0.0.0", # Allow external connections server_port=7860, # Default Gradio port show_api=False, # Hide API documentation show_error=True, # Show detailed error messages quiet=False, # Show startup messages favicon_path=None, # Could add custom favicon app_kwargs={ "docs_url": None, # Disable FastAPI docs "redoc_url": None # Disable ReDoc docs } ) if __name__ == "__main__": print("🚀 Starting PANSEA University Requirements Assistant...") print("📍 Access the application at: http://localhost:7860") print("🔗 For public sharing, set share=True in the launch() method") print("-" * 60) main()