MCPcopy Create free account
hub / github.com/nlweb-ai/NLWeb / prepare

Method prepare

AskAgent/python/core/baseHandler.py:352–410  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

350 raise
351
352 async def prepare(self):
353 tasks = []
354
355 tasks.append(asyncio.create_task(self.decontextualizeQuery().do()))
356 tasks.append(asyncio.create_task(fastTrack.FastTrack(self).do()))
357 tasks.append(asyncio.create_task(query_rewrite.QueryRewrite(self).do()))
358
359 # Check if a specific tool is requested via the 'tool' parameter
360 requested_tool = get_param(self.query_params, "tool", str, None)
361 if requested_tool:
362 # Skip tool selection and use the requested tool directly
363 # Set tool_routing_results to use the specified tool
364 self.tool_routing_results = [{
365 "tool": type('Tool', (), {'name': requested_tool, 'handler_class': None})(),
366 "score": 100,
367 "result": {"score": 100, "justification": f"Tool {requested_tool} specified in request"}
368 }]
369 else:
370 # Normal tool selection
371 tasks.append(asyncio.create_task(router.ToolSelector(self).do()))
372
373 # tasks.append(asyncio.create_task(analyze_query.DetectItemType(self).do()))
374 # tasks.append(asyncio.create_task(analyze_query.DetectMultiItemTypeQuery(self).do()))
375 # tasks.append(asyncio.create_task(analyze_query.DetectQueryType(self).do()))
376 # tasks.append(asyncio.create_task(relevance_detection.RelevanceDetection(self).do()))
377 # tasks.append(asyncio.create_task(memory.Memory(self).do()))
378 # tasks.append(asyncio.create_task(required_info.RequiredInfo(self).do()))
379
380 try:
381 if CONFIG.should_raise_exceptions():
382 # In testing/development mode, raise exceptions to fail tests properly
383 await asyncio.gather(*tasks)
384 else:
385 # In production mode, catch exceptions to avoid crashing
386 await asyncio.gather(*tasks, return_exceptions=True)
387 except Exception:
388 if CONFIG.should_raise_exceptions():
389 raise # Re-raise in testing/development mode
390 finally:
391 self.pre_checks_done_event.set() # Signal completion regardless of errors
392 self.state.set_pre_checks_done()
393
394 # Wait for retrieval to be done
395 if not self.retrieval_done_event.is_set():
396 # Skip retrieval for sites without embeddings
397 if not site_supports_standard_retrieval(self.site):
398 self.final_retrieved_items = []
399 self.retrieval_done_event.set()
400 else:
401 items = await search(
402 self.decontextualized_query,
403 self.site,
404 query_params=self.query_params,
405 handler=self
406 )
407 self.final_retrieved_items = items
408 self.retrieval_done_event.set()
409

Callers 6

runQueryMethod · 0.95
prepare_responseMethod · 0.45
handle_mcp_streamingFunction · 0.45
handle_streaming_askFunction · 0.45
who_handlerFunction · 0.45
sites_handlerFunction · 0.45

Calls 9

decontextualizeQueryMethod · 0.95
get_paramFunction · 0.90
searchFunction · 0.90
setMethod · 0.80
set_pre_checks_doneMethod · 0.80
doMethod · 0.45
infoMethod · 0.45

Tested by

no test coverage detected