Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from src.pdf_processing import extract_pdf_text, split_text_into_chunks | |
| from src.vector_store import create_and_save_vector_store | |
| from src.query_handler import handle_user_query | |
| # Initialize session state for chat history | |
| def initialize_session_state(): | |
| if 'messages' not in st.session_state: | |
| st.session_state.messages = [] | |
| def main(): | |
| """ | |
| Main function to run the Streamlit app. | |
| """ | |
| initialize_session_state() | |
| st.set_page_config("DocuChat") | |
| st.header("DocuChat: Chat with your Document") | |
| st.markdown("Source code available at [[GitHub]](https://github.com/TejaCherukuri/DocuChat)") | |
| # Display previous chat messages | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.write(message["content"]) | |
| # Chat input for user questions | |
| if prompt := st.chat_input("Ask a question about your document"): | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("user"): | |
| st.write(prompt) | |
| with st.chat_message("assistant"): | |
| with st.spinner("Thinking..."): | |
| try: | |
| response = handle_user_query(prompt) | |
| st.write(response) | |
| # Save assistant's response | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |
| except Exception as e: | |
| st.error(f"Error generating response: {str(e)}") | |
| # Sidebar for PDF Upload | |
| with st.sidebar: | |
| st.title("Upload PDF π") | |
| st.write("*This is for demonstration purposes. Do not submit any proprietary documents.*") | |
| pdf_docs = st.file_uploader("Upload your PDF Files", accept_multiple_files=True) | |
| if st.button("Process"): | |
| if not pdf_docs: | |
| st.error("Upload a PDF to start!") | |
| return | |
| with st.spinner("Processing, Chunking, and Caching..."): | |
| raw_text = extract_pdf_text(pdf_docs) | |
| text_chunks = split_text_into_chunks(raw_text) | |
| create_and_save_vector_store(text_chunks) | |
| st.success("Processing Done β ") | |
| if __name__ == "__main__": | |
| main() | |