File size: 1,936 Bytes
d3b823a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import time
from smolagents import DuckDuckGoSearchTool
from smolagents import tool

@tool
def optimized_web_search(
    search_query: str, important_words: list, batch_size: int = 500
) -> str:
    """A tool that performs a web search and filters the results to only include content chunks that contain important keywords.
    Args:
        search_query: The search query to use (e.g., 'Beatles albums Wikipedia')
        important_words: List of important keywords to filter by (e.g., ['Abbey Road', 'Let It Be', '1970'])
        batch_size: The size of content chunks to process (default: 500 characters)
    """
    try:
        # Perform the search using DuckDuckGoSearchTool
        search_tool = DuckDuckGoSearchTool()
        time.sleep(10)
        search_results = search_tool.forward(search_query)
        # Check if search_results is empty or None
        if not search_results or len(search_results) == 0:
            return "No search results found."

        # If search_results is a dictionary, extract the content
        if isinstance(search_results, list):
            all_content = " ".join(
                [result.get("content", "") for result in search_results]
            )
        else:
            all_content = search_results


        batches = []
        for i in range(0, len(all_content), batch_size):
            batches.append(all_content[i : i + batch_size])

        # Filter batches 
        filtered_batches = []
        for batch in batches:
            if any(word.lower() in batch.lower() for word in important_words):
                filtered_batches.append(batch)

        filtered_content = "\n\n".join(filtered_batches)

        if not filtered_content:
            return f"No content containing the important words {important_words} was found in the search results."

        return filtered_content

    except Exception as e:
        return f"Error during optimized web search: {str(e)}"