DocuBot / app.py
Mohamed-BC's picture
docubot-v1.5.3
20b1f3c
raw
history blame
2.04 kB
import streamlit as st
import base64
import os
import tempfile
import time
import utilities as util
def main():
st.set_page_config(page_title="PDF Viewer", layout="wide", page_icon='./logo.png')
# st.image('./logo.png', width=60)
st.title(":blue[DocuBot]",anchor=False)
st.write("View and chat with your PDF")
if 'messages' not in st.session_state:
st.session_state.messages = [{'role': 'assistant', "content": "Hello! Upload a document and let's get started."}]
state = True
# with st.sidebar:
uploaded_file = st.sidebar.file_uploader("Upload your PDF File", type="pdf")
if uploaded_file:
state = False
with tempfile.TemporaryDirectory() as tmp_dir:
file_path = os.path.join(tmp_dir, uploaded_file.name)
with open(file_path, "wb") as f:
f.write(uploaded_file.getvalue()) # Write the PDF content
pdf_text = util.get_pdf_text(file_path)
pdf_frame = util.display_pdf(file_path)
st.sidebar.markdown(pdf_frame, unsafe_allow_html=True)
user_prompt = st.chat_input("What do you wanna know about the document?", disabled=state)
if st.sidebar.button(label="summarize"):
st.session_state.messages.append({'role': 'user', "content": "Summarize the document"})
with st.spinner("..."):
summary = util.summarize(pdf_text, max_length=200)
st.session_state.messages.append({'role': 'assistant', "content": "Summary of "+uploaded_file.name+": <br>"+summary})
if user_prompt:
st.session_state.messages.append({'role': 'user', "content": user_prompt})
response = "You asked: "+user_prompt
with st.spinner("..."):
time.sleep(2)
st.session_state.messages.append({'role': 'assistant', "content": response})
for message in st.session_state.messages:
with st.chat_message(message['role']):
st.markdown(message['content'], unsafe_allow_html=True)
if __name__ == "__main__":
main()