import gradio as gr from utils.credentials import check_credentials, init_clients from ui.embeddings_tab import create_embeddings_tab from ui.search_tab import create_search_tab def create_app(): """Create and configure the Gradio application""" with gr.Blocks(title="MongoDB Vector Search Tool") as iface: gr.Markdown("# MongoDB Vector Search Tool") # Check credentials first has_creds, cred_message = check_credentials() if not has_creds: gr.Markdown(f""" ## ⚠️ Setup Required {cred_message} After setting up credentials, refresh this page. """) else: # Initialize clients openai_client, db_utils = init_clients() if not openai_client or not db_utils: gr.Markdown(""" ## ⚠️ Connection Error Failed to connect to MongoDB Atlas or OpenAI. Please check your credentials and try again. """) else: # Get available databases try: databases = db_utils.get_databases() except Exception as e: gr.Markdown(f""" ## ⚠️ Database Error Failed to list databases: {str(e)} Please check your MongoDB Atlas connection and try again. """) databases = [] # Create tabs embeddings_tab, embeddings_interface = create_embeddings_tab( openai_client=openai_client, db_utils=db_utils, databases=databases ) search_tab, search_interface = create_search_tab( openai_client=openai_client, db_utils=db_utils, databases=databases ) return iface if __name__ == "__main__": app = create_app() app.launch(server_name="0.0.0.0")