ptchecker / app.py
viboognesh-doaz
fixed aws errors
5e32aa7
import streamlit as st
from pdf_processing import process_pdf
from retrieve_and_display import retrieve_and_query, plot_images
from dotenv import load_dotenv
load_dotenv()
def upload_file():
if not st.session_state.filename_and_retriever_engine:
st.title("Upload File to chat with file")
else:
st.title(f"File {st.session_state.filename_and_retriever_engine[0]} loaded.")
st.info("Click on Chat in sidebar")
st.info("Upload another file if you want to chat with a different pdf")
uploaded_file = st.file_uploader("Choose a PDF file", type="pdf")
if uploaded_file is None:
if not st.session_state.filename_and_retriever_engine:
st.info("Please upload a PDF file.")
else:
st.info(f"Uploaded PDF: {uploaded_file.name}")
if st.button("Process PDF"):
with st.spinner("Processing PDF..."):
st.session_state.filename_and_retriever_engine = uploaded_file.name, process_pdf(uploaded_file)
st.success("PDF processed successfully!")
st.success("Click on Chat in sidebar")
def ask_question():
if st.session_state.filename_and_retriever_engine :
st.title(f"Chat with {st.session_state.filename_and_retriever_engine[0]}")
if user_question := st.chat_input("Ask a question"):
with st.spinner("Retrieving information..."):
response, retrieved_image_path_list = retrieve_and_query(user_question, st.session_state.filename_and_retriever_engine[1])
print(retrieved_image_path_list)
st.write("Retrieved Context:")
for node in response.source_nodes:
st.code(node.node.get_text())
st.write("\nRetrieved Images:")
# if len(retrieved_image_path_list) > 0:
plot_images(retrieved_image_path_list)
# st.pyplot()
st.write("\nFinal Answer:")
st.code(response.response)
else:
st.title("Upload File to chat with file")
def main():
if "filename_and_retriever_engine" not in st.session_state:
st.session_state.filename_and_retriever_engine = None
page_names_to_funcs = {
"Upload File": upload_file,
"Chat": ask_question
}
demo_name = st.sidebar.selectbox("PDF Query Tool", page_names_to_funcs.keys())
page_names_to_funcs[demo_name]()
if __name__ == "__main__":
# login_page()
main()