Wajahat698 commited on
Commit
07e3291
·
verified ·
1 Parent(s): 1f23015

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -40
app.py CHANGED
@@ -803,52 +803,57 @@ def side():
803
  accept_multiple_files=True,
804
  key="file_uploader"
805
  )
 
806
  if uploaded_files:
807
  for uploaded_file in uploaded_files:
808
  try:
809
-
810
- upload_to_firebase(st.session_state["wix_user_id"], uploaded_file)
811
- st.sidebar.success(f"File '{uploaded_file.name}' uploaded and converted to TXT!")
812
-
813
  except Exception as e:
814
  st.sidebar.error(f"Error processing file '{uploaded_file.name}': {e}")
815
-
816
  else:
817
- st.sidebar.warning("Please select a file to upload.")
 
818
  # Display and delete functionality for documents
819
  if st.session_state.get("documents"):
820
  doc_ids = list(st.session_state["documents"].keys())
821
  doc_options = ["None (use only main knowledge base)"] + doc_ids
822
- selected_option = st.selectbox(
823
- "Select a document to include in your query:",
824
  options=doc_options,
 
825
  format_func=lambda x: st.session_state["documents"][x].get("name", f"Document {x}") if x != "None (use only main knowledge base)" else x,
826
- key="select_doc"
827
  )
828
- selected_doc_id = selected_option if selected_option != "None (use only main knowledge base)" else None
829
- if selected_doc_id:
830
- st.info(f"Selected Document: {st.session_state['documents'][selected_doc_id]['name']}")
 
 
831
  else:
832
  st.info("Using only the main knowledge base.")
833
  else:
834
- st.warning("Please upload a document to include in your queries.")
835
- selected_doc_id = None
836
-
837
- # Button to delete the selected document
838
- if st.sidebar.button("Delete ", key="delete_button"):
 
839
  try:
840
- # Remove the document from Firebase
841
- db.child("users").child(st.session_state["wix_user_id"]).child("KnowledgeBase").child(selected_doc_id).remove()
842
-
843
- # Remove the document from session state
844
- fetch_documents()
845
-
846
 
 
 
 
847
 
848
- st.sidebar.success("Document deleted successfully!")
849
- st.rerun()
850
  except Exception as e:
851
- st.sidebar.error(f"Error deleting document: {e}")
 
 
852
 
853
  st.sidebar.markdown("</div>", unsafe_allow_html=True)
854
  trust_buckets = ["Any","Stability", "Development", "Relationship", "Benefit", "Vision", "Competence"]
@@ -1120,9 +1125,9 @@ def google_search(query):
1120
 
1121
 
1122
  # RAG response function
1123
- def rag_response(query, selected_doc_id=None):
1124
  """
1125
- Handle queries by searching both the main knowledge base and the selected document.
1126
  """
1127
  try:
1128
  results = []
@@ -1132,16 +1137,21 @@ def rag_response(query, selected_doc_id=None):
1132
  retrieved_docs = search_knowledge_base(query)
1133
  results.extend(retrieved_docs)
1134
 
1135
- # Search vector store of the selected document
1136
- if selected_doc_id:
1137
- vector_store = st.session_state.get("vector_store", {}).get(selected_doc_id)
1138
- if vector_store:
1139
- vector_store_results = vector_store.similarity_search(query, k=5)
1140
- results.extend(vector_store_results)
1141
- else:
1142
- st.warning("Selected document's vector store not found.")
 
 
 
 
 
1143
  else:
1144
- st.warning("No document selected. Proceeding with main knowledge base only.")
1145
 
1146
  # Combine results into a single context
1147
  context = "\n".join([doc.page_content for doc in results])
@@ -1159,9 +1169,6 @@ def rag_response(query, selected_doc_id=None):
1159
  logger.error(f"Error generating RAG response: {e}")
1160
  return "An error occurred during the RAG response generation process."
1161
 
1162
-
1163
-
1164
-
1165
  # Define tools
1166
  @tool
1167
  def knowledge_base_tool(query: str):
 
803
  accept_multiple_files=True,
804
  key="file_uploader"
805
  )
806
+
807
  if uploaded_files:
808
  for uploaded_file in uploaded_files:
809
  try:
810
+ upload_to_firebase(st.session_state["wix_user_id"], uploaded_file)
811
+ st.sidebar.success(f"File '{uploaded_file.name}' uploaded and converted to TXT!")
 
 
812
  except Exception as e:
813
  st.sidebar.error(f"Error processing file '{uploaded_file.name}': {e}")
 
814
  else:
815
+ st.sidebar.warning("Please select a file to upload.")
816
+
817
  # Display and delete functionality for documents
818
  if st.session_state.get("documents"):
819
  doc_ids = list(st.session_state["documents"].keys())
820
  doc_options = ["None (use only main knowledge base)"] + doc_ids
821
+ selected_options = st.multiselect(
822
+ "Select documents to include in your query:",
823
  options=doc_options,
824
+ default="None (use only main knowledge base)",
825
  format_func=lambda x: st.session_state["documents"][x].get("name", f"Document {x}") if x != "None (use only main knowledge base)" else x,
826
+ key="select_docs"
827
  )
828
+ selected_doc_ids = [doc_id for doc_id in selected_options if doc_id != "None (use only main knowledge base)"]
829
+
830
+ if selected_doc_ids:
831
+ selected_doc_names = [st.session_state['documents'][doc_id]['name'] for doc_id in selected_doc_ids]
832
+ st.info(f"Selected Documents: {', '.join(selected_doc_names)}")
833
  else:
834
  st.info("Using only the main knowledge base.")
835
  else:
836
+ st.warning("Please upload documents to include in your queries.")
837
+ selected_doc_ids = []
838
+
839
+ # Button to delete the selected documents
840
+ if selected_doc_ids:
841
+ if st.button("Delete Selected Documents", key="delete_button"):
842
  try:
843
+ for doc_id in selected_doc_ids:
844
+ # Remove the document from Firebase
845
+ db.child("users").child(st.session_state["wix_user_id"]).child("KnowledgeBase").child(doc_id).remove()
 
 
 
846
 
847
+ # Remove from session state
848
+ st.session_state["vector_store"].pop(doc_id, None)
849
+ st.session_state["documents"].pop(doc_id, None)
850
 
851
+ st.success("Selected documents deleted successfully!")
852
+ st.experimental_rerun()
853
  except Exception as e:
854
+ st.error(f"Error deleting documents: {e}")
855
+
856
+
857
 
858
  st.sidebar.markdown("</div>", unsafe_allow_html=True)
859
  trust_buckets = ["Any","Stability", "Development", "Relationship", "Benefit", "Vision", "Competence"]
 
1125
 
1126
 
1127
  # RAG response function
1128
+ def rag_response(query, selected_doc_ids=None):
1129
  """
1130
+ Handle queries by searching both the main knowledge base and the selected documents.
1131
  """
1132
  try:
1133
  results = []
 
1137
  retrieved_docs = search_knowledge_base(query)
1138
  results.extend(retrieved_docs)
1139
 
1140
+ # If selected_doc_ids is None, try to get it from session state
1141
+ if selected_doc_ids is None:
1142
+ selected_doc_ids = st.session_state.get('selected_doc_ids', [])
1143
+
1144
+ # Search vector stores of the selected documents
1145
+ if selected_doc_ids:
1146
+ for doc_id in selected_doc_ids:
1147
+ vector_store = st.session_state.get("vector_store", {}).get(doc_id)
1148
+ if vector_store:
1149
+ vector_store_results = vector_store.similarity_search(query, k=5)
1150
+ results.extend(vector_store_results)
1151
+ else:
1152
+ st.warning(f"Vector store for document '{st.session_state['documents'][doc_id]['name']}' not found.")
1153
  else:
1154
+ st.info("No documents selected. Proceeding with main knowledge base only.")
1155
 
1156
  # Combine results into a single context
1157
  context = "\n".join([doc.page_content for doc in results])
 
1169
  logger.error(f"Error generating RAG response: {e}")
1170
  return "An error occurred during the RAG response generation process."
1171
 
 
 
 
1172
  # Define tools
1173
  @tool
1174
  def knowledge_base_tool(query: str):