|
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") |
|
|
|
|
|
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: |
|
|
|
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: |
|
|
|
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 = [] |
|
|
|
|
|
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") |
|
|