File size: 2,170 Bytes
58edde1
 
45ee012
3b3c852
b0e4f45
3b3c852
58edde1
 
 
862e59b
 
 
 
 
 
 
 
 
 
d304ae4
 
33d813d
3b3c852
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d304ae4
 
 
 
 
99b5e21
3b3c852
d304ae4
 
 
6b58ffb
04376ef
 
3b3c852
 
 
 
 
 
d0de0d8
 
 
 
 
 
 
 
 
 
 
d304ae4
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
62
63
64
65
66
67
68
69
70
71
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("""
    <script>
    document.addEventListener("DOMContentLoaded", function(event) {
        document.addEventListener("keydown", function(event) {
            if (event.ctrlKey && event.key === "Enter") {
                document.querySelector(".stButton button").click();
            }
        });
    });
    </script>
    """, unsafe_allow_html=True)