Fix search functionality in UI and add fallback mechanisms for report generation

This commit is contained in:
Steve White 2025-02-28 11:49:26 -06:00
parent f6f660da97
commit c687216393
1 changed files with 61 additions and 5 deletions

View File

@ -220,6 +220,8 @@ class GradioInterface:
# If custom model is provided, use it
if custom_model:
config["model"] = custom_model
# This will update the report synthesizer to use the custom model
self.report_generator.set_detail_level(detail_level)
print(f"Generating report with detail level: {detail_level}")
print(f"Detail level configuration: {config}")
@ -251,11 +253,66 @@ class GradioInterface:
num_results=config["num_results"]
)
# Add debug logging
print(f"Search results by engine:")
for engine, results in search_results_dict.items():
print(f" {engine}: {len(results)} results")
# Flatten the search results
search_results = []
for engine_results in search_results_dict.values():
search_results.extend(engine_results)
print(f"Total flattened search results: {len(search_results)}")
# Fallback mechanism if no search results are found
if len(search_results) == 0:
print("WARNING: No search results found. Using fallback search mechanism...")
# Try a simplified version of the query
simplified_query = query.split(" ")[:10] # Take first 10 words
simplified_query = " ".join(simplified_query)
if simplified_query != query:
print(f"Trying simplified query: {simplified_query}")
# Create a basic structured query
basic_structured_query = {
"original_query": simplified_query,
"enhanced_query": simplified_query,
"type": "unknown",
"intent": "research"
}
# Try search again with simplified query
search_results_dict = self.search_executor.execute_search(
basic_structured_query,
num_results=config["num_results"]
)
# Flatten the search results
search_results = []
for engine_results in search_results_dict.values():
search_results.extend(engine_results)
print(f"Fallback search returned {len(search_results)} results")
# Second fallback: If still no results, create a mock result to prevent report generation failure
if len(search_results) == 0:
print("WARNING: Fallback search also failed. Creating mock search result...")
# Create a mock search result with the query as the title
search_results = [{
"title": f"Information about: {query}",
"url": "https://example.com/search-result",
"snippet": f"This is a placeholder result for the query: {query}. " +
"The search system was unable to find relevant results. " +
"Please try refining your query or check your search API configuration.",
"source": "mock_result",
"score": 1.0
}]
print("Created mock search result to allow report generation to proceed")
# Rerank results if we have a reranker
if hasattr(self, 'reranker') and self.reranker:
search_results = self.reranker.rerank_with_metadata(
@ -265,12 +322,11 @@ class GradioInterface:
top_n=config["num_results"]
)
# Set the model for report generation if custom model is provided
if custom_model:
# This will update the report synthesizer to use the custom model
self.report_generator.set_detail_level(detail_level)
# Generate the report
print(f"Generating report with {len(search_results)} search results")
if len(search_results) == 0:
print("WARNING: No search results found. Report generation may fail.")
report = await self.report_generator.generate_report(
search_results=search_results,
query=query,