
    hs                     :   d Z ddlmZ ddlmZ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e    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e   d!ee
   d"ee
   dee    d#e"d$ed%ee"   dedefd&Z#ej<                  ejH                  dd'ddd(de
d)ed*eded+ed,ee
   dee    dedefd-Z%	 	 d0de
d.edee    dedef
d/Z&y)1zLoad summarizing chains.    )Mapping)AnyOptional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y)LoadingCallablez2Interface for loading the combine documents chain.llmkwargsreturnc                      y)z-Callable to load the combine documents chain.N )selfr   r   s      ^/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain/chains/summarize/chain.py__call__zLoadingCallable.__call__   s        N)__name__
__module____qualname____doc__r   r   r
   r   r   r   r   r   r      s&    <<< < 
#	<r   r   textN)promptdocument_variable_nameverboser   r#   r$   r%   r   r   c                <    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)      s7     S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/   r0   r1   r2   r3   c          	         t        | |||
      }|xs | }t        ||||
      }t        ||||
      }|d }|-d}t        |      |xs | }t        t        ||||
      |      }t        |||	||
|      }t	        d|||||
d|S )N)r   r#   r%   r2   )r(   r$   r%   r2   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r(   r$   )combine_documents_chaincollapse_documents_chainr1   r%   r2   r3   )r(   reduce_documents_chainr$   r%   r2   r   )r   r   
ValueErrorr   r   )r   r*   r+   r,   r-   r.   r/   r0   r%   r1   r2   r3   r   	map_chain_reduce_llmreduce_chainr5   collapse_chainmsg_collapse_llmr7   s                        r   _load_map_reduce_chainr?   0   s      	I #K	L 2=	 #>  S/!$+,!&#	 $B
 2 7!/1 # 5@  r   existing_answer)question_promptrefine_promptr$   initial_response_name
refine_llmr%   rA   rB   rC   rD   c          	      h    t        | ||      }|xs | }	t        |	||      }
t        d||
|||d|S )Nr'   )initial_llm_chainrefine_llm_chainr$   rC   r%   r   )r   r   )r   rA   rB   r$   rC   rD   r%   r   initial_chain_refine_llmrefine_chains              r   _load_refine_chainrK   y   sU     _gNM#KM7SL '%53  r   
chain_typec                     t         t        t        d}||vr!d| d|j                          }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.

    Returns:
        A chain to use for summarizing.
    )stuff
map_reducerefinezGot unsupported chain type: z. Should be one of r%   )r)   r?   rK   keysr8   )r   rL   r%   r   loader_mappingr=   s         r   load_summarize_chainrS      sk    & #,$5N
 '*:, 7  . 3 3 568 	 o%>*%cE7EfEEr   )rN   N)'r!   collections.abcr   typingr   r   r   langchain_core.callbacksr   langchain_core.language_modelsr   langchain_core.promptsr	   'langchain.chains.combine_documents.baser
   -langchain.chains.combine_documents.map_reducer   )langchain.chains.combine_documents.reducer   )langchain.chains.combine_documents.refiner   (langchain.chains.combine_documents.stuffr   langchain.chains.llmr   langchain.chains.summarizer   r   r   r   PROMPTstrboolr)   intr?   REFINE_PROMPTrK   rS   r   r   r   <module>re      sF    # * * . < 5 M Q J J H ) V V<h < ".!4!4"("	   	
 d^  * &7%=%=):)A)A*0-348.204"*.F	F #F '	F
 %(F (+F 01F *+F ,-F d^F F F #3-F F FX +9*?*?(6(D(D"(!2.2"	 ( &	
    *+ d^  4 "F	FF d^F 	F
 Fr   