Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,7 +3,7 @@ import os
|
|
3 |
from langchain_community.vectorstores import FAISS
|
4 |
from langchain_community.document_loaders import PyPDFLoader
|
5 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
6 |
-
from langchain_community.embeddings import HuggingFaceEmbeddings
|
7 |
from langchain_huggingface import HuggingFaceEndpoint # Updated import
|
8 |
from langchain.chains import ConversationalRetrievalChain
|
9 |
from langchain.memory import ConversationBufferMemory
|
@@ -27,7 +27,7 @@ def load_doc(uploaded_files):
|
|
27 |
for loader in loaders:
|
28 |
pages.extend(loader.load())
|
29 |
|
30 |
-
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=64)
|
31 |
doc_splits = text_splitter.split_documents(pages)
|
32 |
|
33 |
for temp_file in temp_files:
|
@@ -66,7 +66,7 @@ def initialize_llmchain(llm_model, vector_db):
|
|
66 |
qa_chain = ConversationalRetrievalChain.from_llm(
|
67 |
llm,
|
68 |
retriever=retriever,
|
69 |
-
chain_type="stuff",
|
70 |
memory=memory,
|
71 |
return_source_documents=True,
|
72 |
verbose=False,
|
@@ -122,10 +122,10 @@ def conversation(qa_chain, message, history):
|
|
122 |
response_source3 = response_sources[2].page_content.strip()
|
123 |
response_source3_page = response_sources[2].metadata["page"] + 1
|
124 |
new_history = history + [(message, response_answer)]
|
125 |
-
return qa_chain, new_history, response_source1, response_source1_page, response_source2, response_source2_page, response_source3, response_source3_page
|
126 |
except Exception as e:
|
127 |
st.error(f"Error in conversation: {e}")
|
128 |
-
return qa_chain, history, "", 0, "", 0, "", 0
|
129 |
|
130 |
def main():
|
131 |
st.sidebar.title("PDF Chatbot")
|
@@ -163,17 +163,19 @@ def main():
|
|
163 |
|
164 |
if st.button("Submit"):
|
165 |
with st.spinner("Generating response..."):
|
166 |
-
qa_chain, history, response_source1, source1_page, response_source2, source2_page, response_source3, source3_page = conversation(st.session_state['qa_chain'], message, history)
|
167 |
st.session_state['qa_chain'] = qa_chain
|
168 |
|
169 |
st.markdown("### Chatbot Response")
|
170 |
-
st.
|
171 |
-
|
172 |
-
st.
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
|
|
177 |
|
178 |
if __name__ == "__main__":
|
179 |
main()
|
|
|
3 |
from langchain_community.vectorstores import FAISS
|
4 |
from langchain_community.document_loaders import PyPDFLoader
|
5 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
6 |
+
from langchain_community.embeddings import HuggingFaceEmbeddings
|
7 |
from langchain_huggingface import HuggingFaceEndpoint # Updated import
|
8 |
from langchain.chains import ConversationalRetrievalChain
|
9 |
from langchain.memory import ConversationBufferMemory
|
|
|
27 |
for loader in loaders:
|
28 |
pages.extend(loader.load())
|
29 |
|
30 |
+
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1024, chunk_overlap=64)
|
31 |
doc_splits = text_splitter.split_documents(pages)
|
32 |
|
33 |
for temp_file in temp_files:
|
|
|
66 |
qa_chain = ConversationalRetrievalChain.from_llm(
|
67 |
llm,
|
68 |
retriever=retriever,
|
69 |
+
chain_type="stuff",
|
70 |
memory=memory,
|
71 |
return_source_documents=True,
|
72 |
verbose=False,
|
|
|
122 |
response_source3 = response_sources[2].page_content.strip()
|
123 |
response_source3_page = response_sources[2].metadata["page"] + 1
|
124 |
new_history = history + [(message, response_answer)]
|
125 |
+
return qa_chain, new_history, response_answer, response_source1, response_source1_page, response_source2, response_source2_page, response_source3, response_source3_page
|
126 |
except Exception as e:
|
127 |
st.error(f"Error in conversation: {e}")
|
128 |
+
return qa_chain, history, "", "", 0, "", 0, "", 0
|
129 |
|
130 |
def main():
|
131 |
st.sidebar.title("PDF Chatbot")
|
|
|
163 |
|
164 |
if st.button("Submit"):
|
165 |
with st.spinner("Generating response..."):
|
166 |
+
qa_chain, history, response_answer, response_source1, source1_page, response_source2, source2_page, response_source3, source3_page = conversation(st.session_state['qa_chain'], message, history)
|
167 |
st.session_state['qa_chain'] = qa_chain
|
168 |
|
169 |
st.markdown("### Chatbot Response")
|
170 |
+
st.write(response_answer)
|
171 |
+
|
172 |
+
with st.expander("Relevant context from the source document"):
|
173 |
+
st.text_area("Source 1", value=response_source1, height=100)
|
174 |
+
st.text(f"Page: {source1_page}")
|
175 |
+
st.text_area("Source 2", value=response_source2, height=100)
|
176 |
+
st.text(f"Page: {source2_page}")
|
177 |
+
st.text_area("Source 3", value=response_source3, height=100)
|
178 |
+
st.text(f"Page: {source3_page}")
|
179 |
|
180 |
if __name__ == "__main__":
|
181 |
main()
|