Shreyas094 commited on
Commit
b88f544
·
verified ·
1 Parent(s): 1bb12da

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -21
app.py CHANGED
@@ -295,58 +295,64 @@ def respond(message, history, model, temperature, num_calls, use_web_search, sel
295
  logging.info(f"User Query: {message}")
296
  logging.info(f"Model Used: {model}")
297
  logging.info(f"Search Type: {'Web Search' if use_web_search else 'PDF Search'}")
298
-
299
  logging.info(f"Selected Documents: {selected_docs}")
300
 
301
  try:
302
  if use_web_search:
 
303
  for main_content, sources in get_response_with_search(message, model, num_calls=num_calls, temperature=temperature):
304
  response = f"{main_content}\n\n{sources}"
305
- first_line = response.split('\n')[0] if response else ''
306
- # logging.info(f"Generated Response (first line): {first_line}")
307
  yield response
308
  else:
 
309
  embed = get_embeddings()
310
  if os.path.exists("faiss_database"):
 
311
  database = FAISS.load_local("faiss_database", embed, allow_dangerous_deserialization=True)
312
  retriever = database.as_retriever()
313
 
 
 
 
 
 
 
 
 
 
314
  # Filter relevant documents based on user selection
315
- all_relevant_docs = retriever.get_relevant_documents(message)
316
- relevant_docs = [doc for doc in all_relevant_docs if doc.metadata["source"] in selected_docs]
317
 
318
- if not relevant_docs:
 
319
  yield "No relevant information found in the selected documents. Please try selecting different documents or rephrasing your query."
320
  return
321
 
322
- context_str = "\n".join([doc.page_content for doc in relevant_docs])
 
323
  else:
 
324
  context_str = "No documents available."
325
  yield "No documents available. Please upload PDF documents to answer questions."
326
  return
327
 
328
  if model == "@cf/meta/llama-3.1-8b-instruct":
329
- # Use Cloudflare API
330
  for partial_response in get_response_from_cloudflare(prompt="", context=context_str, query=message, num_calls=num_calls, temperature=temperature, search_type="pdf"):
331
- first_line = partial_response.split('\n')[0] if partial_response else ''
332
- logging.info(f"Generated Response (first line): {first_line}")
333
  yield partial_response
334
  else:
335
- # Use Hugging Face API
336
  for partial_response in get_response_from_pdf(message, model, selected_docs, num_calls=num_calls, temperature=temperature):
337
- first_line = partial_response.split('\n')[0] if partial_response else ''
338
- logging.info(f"Generated Response (first line): {first_line}")
339
  yield partial_response
340
  except Exception as e:
341
- logging.error(f"Error with {model}: {str(e)}")
342
- if "microsoft/Phi-3-mini-4k-instruct" in model:
343
- logging.info("Falling back to Mistral model due to Phi-3 error")
344
- fallback_model = "mistralai/Mistral-7B-Instruct-v0.3"
345
- yield from respond(message, history, fallback_model, temperature, num_calls, use_web_search, selected_docs)
346
- else:
347
- yield f"An error occurred with the {model} model: {str(e)}. Please try again or select a different model."
348
 
349
- logging.basicConfig(level=logging.DEBUG)
350
 
351
  def get_response_from_cloudflare(prompt, context, query, num_calls=3, temperature=0.2, search_type="pdf"):
352
  headers = {
 
295
  logging.info(f"User Query: {message}")
296
  logging.info(f"Model Used: {model}")
297
  logging.info(f"Search Type: {'Web Search' if use_web_search else 'PDF Search'}")
 
298
  logging.info(f"Selected Documents: {selected_docs}")
299
 
300
  try:
301
  if use_web_search:
302
+ logging.info("Entering web search flow")
303
  for main_content, sources in get_response_with_search(message, model, num_calls=num_calls, temperature=temperature):
304
  response = f"{main_content}\n\n{sources}"
305
+ logging.info(f"Generated Response (first 100 chars): {response[:100]}...")
 
306
  yield response
307
  else:
308
+ logging.info("Entering PDF search flow")
309
  embed = get_embeddings()
310
  if os.path.exists("faiss_database"):
311
+ logging.info("FAISS database exists, loading it")
312
  database = FAISS.load_local("faiss_database", embed, allow_dangerous_deserialization=True)
313
  retriever = database.as_retriever()
314
 
315
+ logging.info("Attempting to retrieve relevant documents")
316
+ try:
317
+ relevant_docs = retriever.invoke(message)
318
+ logging.info(f"Retrieved {len(relevant_docs)} relevant documents")
319
+ except Exception as e:
320
+ logging.error(f"Error retrieving relevant documents: {str(e)}")
321
+ yield f"An error occurred while retrieving relevant documents: {str(e)}"
322
+ return
323
+
324
  # Filter relevant documents based on user selection
325
+ filtered_docs = [doc for doc in relevant_docs if doc.metadata["source"] in selected_docs]
326
+ logging.info(f"Filtered to {len(filtered_docs)} documents based on user selection")
327
 
328
+ if not filtered_docs:
329
+ logging.warning("No relevant information found in the selected documents")
330
  yield "No relevant information found in the selected documents. Please try selecting different documents or rephrasing your query."
331
  return
332
 
333
+ context_str = "\n".join([doc.page_content for doc in filtered_docs])
334
+ logging.info(f"Total context length: {len(context_str)}")
335
  else:
336
+ logging.warning("No FAISS database found")
337
  context_str = "No documents available."
338
  yield "No documents available. Please upload PDF documents to answer questions."
339
  return
340
 
341
  if model == "@cf/meta/llama-3.1-8b-instruct":
342
+ logging.info("Using Cloudflare API")
343
  for partial_response in get_response_from_cloudflare(prompt="", context=context_str, query=message, num_calls=num_calls, temperature=temperature, search_type="pdf"):
344
+ logging.info(f"Generated Response (first 100 chars): {partial_response[:100]}...")
 
345
  yield partial_response
346
  else:
347
+ logging.info("Using Hugging Face API")
348
  for partial_response in get_response_from_pdf(message, model, selected_docs, num_calls=num_calls, temperature=temperature):
349
+ logging.info(f"Generated Response (first 100 chars): {partial_response[:100]}...")
 
350
  yield partial_response
351
  except Exception as e:
352
+ logging.error(f"Unexpected error in respond function: {str(e)}")
353
+ yield f"An unexpected error occurred: {str(e)}"
 
 
 
 
 
354
 
355
+ logging.info("Finished respond function")
356
 
357
  def get_response_from_cloudflare(prompt, context, query, num_calls=3, temperature=0.2, search_type="pdf"):
358
  headers = {