File size: 2,142 Bytes
8fb6e2f
46a6768
 
 
8fb6e2f
46a6768
 
 
 
8fb6e2f
46a6768
 
 
 
 
8fb6e2f
46a6768
5df473f
46a6768
5df473f
 
46a6768
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8fb6e2f
46a6768
8fb6e2f
 
46a6768
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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")