
    m
i                         d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZ  G d de          Zej        dddde	dedededz  dedefdZ ej        ej        ddddddddddde	dedededed edz  d!e	dz  d"e	dz  dedz  d#e!d$ed%e!dz  dedefd&Z"ej        ej#        dd'ddd(de	d)ed*eded+ed,e	dz  dedz  dedefd-Z$	 	 d1de	d/ededz  dedef
d0Z%dS )2zLoad summarizing chains.    )Mapping)AnyProtocol)	Callbacks)BaseLanguageModel)BasePromptTemplate)BaseCombineDocumentsChain)MapReduceDocumentsChain)ReduceDocumentsChain)RefineDocumentsChain)StuffDocumentsChain)LLMChain)map_reduce_promptrefine_promptsstuff_promptc                   &    e Zd ZdZdededefdZdS )LoadingCallablez2Interface for loading the combine documents chain.llmkwargsreturnc                     dS )z-Callable to load the combine documents chain.N )selfr   r   s      C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/chains/summarize/chain.py__call__zLoadingCallable.__call__   s          N)__name__
__module____qualname____doc__r   r   r	   r   r   r   r   r   r      sJ        <<<< < 
#	< < < < < <r   r   textN)promptdocument_variable_nameverboser   r"   r#   r$   r   r   c                H    t          | ||          }	 t          d|||d|S )Nr   r"   r$   )	llm_chainr#   r$   r   )r   r   )r   r"   r#   r$   r   r'   s         r   _load_stuff_chainr(   $   sN     SAAAI  5  	  r   i  )
map_promptcombine_promptcombine_document_variable_name!map_reduce_document_variable_namecollapse_prompt
reduce_llmcollapse_llmr$   	token_max	callbackscollapse_max_retriesr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   c          	      H   t          | |||
          }|p| }t          ||||
          }	 t          ||||
          }|d }|d}t          |          n&|p| }t          t          ||||
          |          }t          |||	||
|          }t	          d|||||
d|S )N)r   r"   r$   r1   )r'   r#   r$   r1   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r'   r#   )combine_documents_chaincollapse_documents_chainr0   r$   r1   r2   )r'   reduce_documents_chainr#   r$   r1   r   )r   r   
ValueErrorr   r
   )r   r)   r*   r+   r,   r-   r.   r/   r$   r0   r1   r2   r   	map_chain_reduce_llmreduce_chainr4   collapse_chainmsg_collapse_llmr6   s                        r   _load_map_reduce_chainr>   D   sM     	  I #K	  L@ 2=	   #>  S//! $ %+,!&#	   $B
 
 
 2 7!/1   # 5@    r   existing_answer)question_promptrefine_promptr#   initial_response_name
refine_llmr$   r@   rA   rB   rC   c          	      v    t          | ||          }|p| }	t          |	||          }
t          d||
|||d|S )Nr&   )initial_llm_chainrefine_llm_chainr#   rB   r$   r   )r   r   )r   r@   rA   r#   rB   rC   r$   r   initial_chain_refine_llmrefine_chains              r   _load_refine_chainrJ      sk     _gNNNM#KM7SSSL '%53    r   stuff
chain_typec                     t           t          t          d}||vr)d| d|                                 }t	          |           ||         | fd|i|S )a  Load summarizing chain.

    Args:
        llm: Language Model to use in the chain.
        chain_type: Type of document combining chain to use. Should be one of "stuff",
            "map_reduce", and "refine".
        verbose: Whether chains should be run in verbose mode or not. Note that this
            applies to all chains that make up the final chain.
        **kwargs: Additional keyword arguments.

    Returns:
        A chain to use for summarizing.
    )rK   
map_reducerefinezGot unsupported chain type: z. Should be one of r$   )r(   r>   rJ   keysr7   )r   rL   r$   r   loader_mappingr<   s         r   load_summarize_chainrR      s    ( #,$5 5N
 ''8: 8 8 . 3 3 5 58 8 	 oo%>*%cEE7EfEEEr   )rK   N)&r    collections.abcr   typingr   r   langchain_core.callbacksr   langchain_core.language_modelsr   langchain_core.promptsr   /langchain_classic.chains.combine_documents.baser	   5langchain_classic.chains.combine_documents.map_reducer
   1langchain_classic.chains.combine_documents.reducer   1langchain_classic.chains.combine_documents.refiner   0langchain_classic.chains.combine_documents.stuffr   langchain_classic.chains.llmr   "langchain_classic.chains.summarizer   r   r   r   PROMPTstrboolr(   intr>   REFINE_PROMPTrJ   rR   r   r   r   <module>rd      s     # # # # # #                 . . . . . . < < < < < < 5 5 5 5 5 5 U U U U U U      S R R R R R R R R R R R P P P P P P 1 1 1 1 1 1         < < < < <h < < < ".!4"(  	   	
 D[     F &7%=):)A*0-315+/-1'+e e e	e #e '	e
 %(e (+e ($.e "D(e $d*e D[e e e *e e e e e eV +9*?(6(D"(!2+/  	 ( &	
    "D( D[     4 F F	FF D[F 	F
 F F F F F Fr   