TopEdu_Demo / app_gradio.py
yyzsna's picture
Upload folder using huggingface_hub
102c695 verified
"""
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()