Fix search functionality in UI and add fallback mechanisms for report generation
This commit is contained in:
parent
f6f660da97
commit
c687216393
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue