classRetrieverRouterQueryEngine(BaseQueryEngine):""" Retriever-based router query engine. NOTE: this is deprecated, please use our new ToolRetrieverRouterQueryEngine Use a retriever to select a set of Nodes. Each node will be converted into a ToolMetadata object, and also used to retrieve a query engine, to form a QueryEngineTool. NOTE: this is a beta feature. We are figuring out the right interface between the retriever and query engine. Args: selector (BaseSelector): A selector that chooses one out of many options based on each candidate's metadata and query. query_engine_tools (Sequence[QueryEngineTool]): A sequence of candidate query engines. They must be wrapped as tools to expose metadata to the selector. callback_manager (Optional[CallbackManager]): A callback manager. """def__init__(self,retriever:BaseRetriever,node_to_query_engine_fn:Callable,callback_manager:Optional[CallbackManager]=None,)->None:self._retriever=retrieverself._node_to_query_engine_fn=node_to_query_engine_fnsuper().__init__(callback_manager)def_get_prompt_modules(self)->PromptMixinType:"""Get prompt sub-modules."""# NOTE: don't include tools for nowreturn{"retriever":self._retriever}def_query(self,query_bundle:QueryBundle)->RESPONSE_TYPE:nodes_with_score=self._retriever.retrieve(query_bundle)# TODO: for now we only support retrieving one nodeiflen(nodes_with_score)>1:raiseValueError("Retrieved more than one node.")node=nodes_with_score[0].nodequery_engine=self._node_to_query_engine_fn(node)returnquery_engine.query(query_bundle)asyncdef_aquery(self,query_bundle:QueryBundle)->RESPONSE_TYPE:returnself._query(query_bundle)