File size: 1,033 Bytes
5551822
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import logging
from utils.asyncHandler import asyncHandler
from src.MultiRag.models.worker_model import State
from src.MultiRag.tools.web_search import WebSearch

@asyncHandler
async def search_node(state: State) -> State:
    logging.info("Starting Search worker node...")
    query = state.plan_to_retrieve
    logging.info(f"Searching for: {query}")
    
    search_tool = WebSearch().search
    results = await search_tool.ainvoke(query)
    
    logging.info(f"Search completed. Found {len(results) if isinstance(results, list) else 'some'} results.")
    
    from langchain_core.documents import Document
    
    docs = []
    if isinstance(results, list):
        for r in results:
            content = r.get('content', str(r))
            url = r.get('url', 'Web Search')
            docs.append(Document(page_content=content, metadata={"source": url, "type": "web"}))
    else:
        docs.append(Document(page_content=str(results), metadata={"source": "Web Search", "type": "web"}))

    return {"worker_result": docs}