import sys sys.path.append('.') from copy import deepcopy from langchain.callbacks import StreamlitCallbackHandler import streamlit as st import logging import ui_utils import weaviate_utils import tapas_utils from weaviate_utils import * from tapas_utils import * from ui_utils import * # Initialize Weaviate client client = initialize_weaviate_client() # Initialize TAPAS tokenizer, model = initialize_tapas() # Global list to store debugging information DEBUG_LOGS = [] class StreamlitCallbackHandler(logging.Handler): def emit(self, record): log_entry = self.format(record) st.write(log_entry) def log_debug_info(message): if st.session_state.debug: logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # Check if StreamlitCallbackHandler is already added to avoid duplicate logs if not any(isinstance(handler, StreamlitCallbackHandler) for handler in logger.handlers): handler = StreamlitCallbackHandler() logger.addHandler(handler) logger.debug(message) # UI components ui_utils.display_initial_buttons() selected_class = ui_utils.display_class_dropdown(client) ui_utils.handle_new_class_selection(client, selected_class) ui_utils.csv_upload_and_ingestion(client, selected_class) ui_utils.display_query_input(client, selected_class, tokenizer, model) # Updated this line # Initialize session state attributes if "debug" not in st.session_state: st.session_state.debug = False st.title("TAPAS Table Question Answering with Weaviate") # Display debugging information if st.checkbox("Show Debugging Information"): st.write("Debugging Logs:") for log in DEBUG_LOGS: st.write(log) # Add Ctrl+Enter functionality for submitting the questions st.markdown(""" """, unsafe_allow_html=True)