Spaces:
Sleeping
Sleeping
# app.py | |
import gradio as gr | |
import logging | |
from app.logging_config import configure_logging | |
from app.functions.database_handling import list_databases | |
from ui.chatbot_tab import create_chatbot_tab | |
from ui.db_management_tab import create_db_management_tab | |
from ui.document_management_tab import create_document_management_tab | |
from ui.document_view_tab import create_document_view_tab | |
from ui.new_features_tab import create_new_features_tab | |
# Configura il logging | |
configure_logging() | |
def update_all_dropdowns(): | |
""" | |
Aggiorna tutti i dropdown in tutte le tab. | |
Nel tuo scenario, hai 6 dropdown totali (2 nella tab DB, 2 nella tab Documenti, | |
eventualmente 1 nella tab Chatbot, 1 in altre tab, ecc.). | |
Se ne hai di più o di meno, modifica il numero nel range. | |
""" | |
databases = list_databases() | |
# Imposta la prima voce selezionata (value) solo se la lista non è vuota | |
# e aggiorna le "choices" di tutti i dropdown. | |
return [gr.update(choices=databases, value=databases[0] if databases else None) for _ in range(6)] | |
def main(): | |
"""Funzione principale che crea e lancia l'app Gradio.""" | |
logging.info("Avvio applicazione") | |
try: | |
with gr.Blocks() as rag_chatbot: | |
gr.Markdown("# Chatbot basato su RAG") | |
logging.info("Interfaccia Gradio inizializzata") | |
# Crea i vari tab dell'interfaccia | |
create_chatbot_tab() | |
create_db_management_tab(update_all_dropdowns) # Passiamo la callback | |
create_document_management_tab(update_all_dropdowns) # Passiamo la callback | |
create_document_view_tab() | |
create_new_features_tab() | |
logging.info("Tab dell'interfaccia creati con successo") | |
# Avvia l'app | |
logging.info("Avvio server Gradio") | |
rag_chatbot.launch() | |
except Exception as e: | |
logging.error(f"Errore durante l'avvio: {str(e)}", exc_info=True) | |
if __name__ == "__main__": | |
main() | |