Spaces:
Running
Running
Update app.py
Browse files
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("
|
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)
|
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 |
-
|
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 #
|
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)",
|