Shreyas094 commited on
Commit
7a7b1d4
·
verified ·
1 Parent(s): 022b6d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -8
app.py CHANGED
@@ -265,14 +265,14 @@ class CitingSources(BaseModel):
265
  ...,
266
  description="List of sources to cite. Should be an URL of the source."
267
  )
268
- def chatbot_interface(message, history, use_web_search, model, temperature, num_calls):
269
  if not message.strip():
270
  return "", history
271
 
272
  history = history + [(message, "")]
273
 
274
  try:
275
- for response in respond(message, history, model, temperature, num_calls, use_web_search):
276
  history[-1] = (message, response)
277
  yield history
278
  except gr.CancelledError:
@@ -344,10 +344,12 @@ def respond(message, history, model, temperature, num_calls, use_web_search, sel
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)}"
@@ -456,15 +458,18 @@ def get_response_from_pdf(query, model, selected_docs, num_calls=3, temperature=
456
  retriever = database.as_retriever()
457
  logging.info(f"Retrieving relevant documents for query: {query}")
458
  try:
459
- relevant_docs = retriever.invoke(query) # Use invoke instead of get_relevant_documents
460
  logging.info(f"Number of relevant documents retrieved: {len(relevant_docs)}")
461
  except Exception as e:
462
  logging.error(f"Error retrieving relevant documents: {str(e)}")
463
  yield f"An error occurred while retrieving relevant documents: {str(e)}"
464
  return
465
 
 
 
 
466
  # Filter relevant_docs based on selected documents
467
- filtered_docs = [doc for doc in relevant_docs if doc.metadata["source"] in selected_docs]
468
  logging.info(f"Number of filtered documents: {len(filtered_docs)}")
469
 
470
  if not filtered_docs:
@@ -473,7 +478,7 @@ def get_response_from_pdf(query, model, selected_docs, num_calls=3, temperature=
473
  return
474
 
475
  for doc in filtered_docs:
476
- logging.info(f"Document source: {doc.metadata['source']}")
477
  logging.info(f"Document content preview: {doc.page_content[:100]}...") # Log first 100 characters of each document
478
 
479
  context_str = "\n".join([doc.page_content for doc in filtered_docs])
@@ -549,13 +554,13 @@ document_selector = gr.CheckboxGroup(label="Select documents to query")
549
  use_web_search = gr.Checkbox(label="Use Web Search", value=True)
550
 
551
  demo = gr.ChatInterface(
552
- respond,
553
  additional_inputs=[
554
  gr.Dropdown(choices=MODELS, label="Select Model", value=MODELS[3]),
555
  gr.Slider(minimum=0.1, maximum=1.0, value=0.2, step=0.1, label="Temperature"),
556
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
557
  use_web_search,
558
- document_selector # Add the document selector to the chat interface
559
  ],
560
  title="AI-powered Web Search and PDF Chat Assistant",
561
  description="Chat with your PDFs or use web search to answer questions (Please use toggle under Additional Inputs to swithc between PDF and Web Search, Default Value Web Search)",
 
265
  ...,
266
  description="List of sources to cite. Should be an URL of the source."
267
  )
268
+ def chatbot_interface(message, history, use_web_search, model, temperature, num_calls, selected_docs):
269
  if not message.strip():
270
  return "", history
271
 
272
  history = history + [(message, "")]
273
 
274
  try:
275
+ for response in respond(message, history, model, temperature, num_calls, use_web_search, selected_docs):
276
  history[-1] = (message, response)
277
  yield history
278
  except gr.CancelledError:
 
344
  logging.info(f"Generated Response (first 100 chars): {partial_response[:100]}...")
345
  yield partial_response
346
  else:
347
+ logging.info("Entering PDF search flow")
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
+
352
+ logging.info("Finished respond function")
353
  except Exception as e:
354
  logging.error(f"Unexpected error in respond function: {str(e)}")
355
  yield f"An unexpected error occurred: {str(e)}"
 
458
  retriever = database.as_retriever()
459
  logging.info(f"Retrieving relevant documents for query: {query}")
460
  try:
461
+ relevant_docs = retriever.invoke(query)
462
  logging.info(f"Number of relevant documents retrieved: {len(relevant_docs)}")
463
  except Exception as e:
464
  logging.error(f"Error retrieving relevant documents: {str(e)}")
465
  yield f"An error occurred while retrieving relevant documents: {str(e)}"
466
  return
467
 
468
+ # Log the sources of relevant documents
469
+ logging.info(f"Sources of relevant documents: {[os.path.basename(doc.metadata['source']) for doc in relevant_docs]}")
470
+
471
  # Filter relevant_docs based on selected documents
472
+ filtered_docs = [doc for doc in relevant_docs if os.path.basename(doc.metadata["source"]) in selected_docs]
473
  logging.info(f"Number of filtered documents: {len(filtered_docs)}")
474
 
475
  if not filtered_docs:
 
478
  return
479
 
480
  for doc in filtered_docs:
481
+ logging.info(f"Document source: {os.path.basename(doc.metadata['source'])}")
482
  logging.info(f"Document content preview: {doc.page_content[:100]}...") # Log first 100 characters of each document
483
 
484
  context_str = "\n".join([doc.page_content for doc in filtered_docs])
 
554
  use_web_search = gr.Checkbox(label="Use Web Search", value=True)
555
 
556
  demo = gr.ChatInterface(
557
+ chatbot_interface,
558
  additional_inputs=[
559
  gr.Dropdown(choices=MODELS, label="Select Model", value=MODELS[3]),
560
  gr.Slider(minimum=0.1, maximum=1.0, value=0.2, step=0.1, label="Temperature"),
561
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
562
  use_web_search,
563
+ document_selector # This should now correctly pass the selected documents
564
  ],
565
  title="AI-powered Web Search and PDF Chat Assistant",
566
  description="Chat with your PDFs or use web search to answer questions (Please use toggle under Additional Inputs to swithc between PDF and Web Search, Default Value Web Search)",