[docs]defpassage_compressor_node(func):@functools.wraps(func)@result_to_dataframe(["retrieved_contents"])defwrapper(project_dir:Union[str,Path],previous_result:pd.DataFrame,*args,**kwargs)->List[List[str]]:logger.info(f"Running generator node - {func.__name__} module...")assertall([columninprevious_result.columnsforcolumnin["query","retrieved_contents","retrieved_ids","retrieve_scores",]]),"previous_result must have retrieved_contents, retrieved_ids, and retrieve_scores columns."assertlen(previous_result)>0,"previous_result must have at least one row."queries=previous_result["query"].tolist()retrieved_contents=previous_result["retrieved_contents"].tolist()retrieved_ids=previous_result["retrieved_ids"].tolist()retrieve_scores=previous_result["retrieve_scores"].tolist()iffunc.__name__in["tree_summarize","refine"]:param_list=["prompt","chat_prompt","context_window","num_output","batch",]param_dict=dict(filter(lambdax:x[0]inparam_list,kwargs.items()))kwargs_dict=dict(filter(lambdax:x[0]notinparam_list,kwargs.items()))llm_name=kwargs_dict.pop("llm")llm=make_llm(llm_name,kwargs_dict)result=func(queries=queries,contents=retrieved_contents,scores=retrieve_scores,ids=retrieved_ids,llm=llm,**param_dict,)delllmresult=list(map(lambdax:[x],result))eliffunc.__name__=="longllmlingua":result=func(queries=queries,contents=retrieved_contents,scores=retrieve_scores,ids=retrieved_ids,**kwargs,)result=list(map(lambdax:[x],result))eliffunc.__name__=="pass_compressor":result=func(contents=retrieved_contents)else:raiseValueError(f"{func.__name__} is not supported in passage compressor node.")returnresultreturnwrapper
[docs]defmake_llm(llm_name:str,kwargs:Dict)->LLM:ifllm_namenotingenerator_models:raiseKeyError(f"{llm_name} is not supported. ""You can add it manually by calling autorag.generator_models.")returngenerator_models[llm_name](**kwargs)