Spaces:
Sleeping
Sleeping
| from function import * | |
| import streamlit as st | |
| from htmlTemplate import css, bot_template, user_template | |
| def handle_user_input(user_question): | |
| if "conversation" not in st.session_state: | |
| st.session_state.conversation = None | |
| if "chat_history" not in st.session_state: | |
| st.session_state.chat_history = [] | |
| response = st.session_state.conversation({'question': user_question, 'chat_history': st.session_state.chat_history}) | |
| st.session_state.chat_history = response['chat_history'] | |
| for i, message in enumerate(st.session_state.chat_history): | |
| if i % 2 == 0: | |
| st.markdown(user_template.replace("{{MSG}}", message.content), unsafe_allow_html=True) | |
| else: | |
| st.markdown(bot_template.replace("{{MSG}}", message.content), unsafe_allow_html=True) | |
| def main(): | |
| st.set_page_config(page_title="ChatBot with Multiple PDF", layout="wide", page_icon=":robot_face:") # Set layout to wide | |
| st.write(css, unsafe_allow_html=True) | |
| # Improved sidebar layout | |
| with st.sidebar: | |
| st.title("ChatBot Settings π οΈ") | |
| pdf_docs = st.file_uploader("Upload PDF documents", accept_multiple_files=True) | |
| if st.button("Process or Reset Conversation π"): | |
| with st.spinner("Processing..."): | |
| if pdf_docs: | |
| # get pdf text | |
| documents = read_multiple_pdf(pdf_docs) | |
| # get the text chunks | |
| chunks = chunk_docs(documents, chunk_size=500, chunk_overlap=50) | |
| # create vector store | |
| vector_db = embedding_chunks(chunks) | |
| # create conversation chain | |
| st.session_state.conversation = chain_conversation(vector_db) | |
| else: | |
| st.warning("Please upload at least one PDF before processing.") | |
| # Improved main content layout | |
| st.title("ChatBot with Multiple PDF π€") | |
| st.markdown("---") | |
| user_question = st.text_input("Ask a question about your documents:", key="user_input_key", value="", disabled=not pdf_docs) | |
| if st.button("Ask π€") or user_question: | |
| if not pdf_docs: | |
| st.warning("Please upload PDFs and click 'Process' before asking questions.") | |
| else: | |
| handle_user_input(user_question) | |
| if __name__ == "__main__": | |
| main() | |