Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
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 |
-
|
316 |
-
|
317 |
|
318 |
-
if not
|
|
|
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
|
|
|
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 |
-
|
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 |
-
|
332 |
-
logging.info(f"Generated Response (first line): {first_line}")
|
333 |
yield partial_response
|
334 |
else:
|
335 |
-
|
336 |
for partial_response in get_response_from_pdf(message, model, selected_docs, num_calls=num_calls, temperature=temperature):
|
337 |
-
|
338 |
-
logging.info(f"Generated Response (first line): {first_line}")
|
339 |
yield partial_response
|
340 |
except Exception as e:
|
341 |
-
logging.error(f"
|
342 |
-
|
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.
|
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 = {
|