
    KKi                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!  \" SSSS9 " S S\5      5       r"g)zMap-reduce chain.

Splits up a document, sends the smaller parts to the LLM with one prompt,
then combines the results with another one.
    )annotations)Mapping)Any)
deprecated)CallbackManagerForChainRun	Callbacks)Document)BaseLanguageModel)BasePromptTemplate)TextSplitter)
ConfigDict)ReduceDocumentsChain)Chain)BaseCombineDocumentsChain)MapReduceDocumentsChain)StuffDocumentsChain)LLMChainz0.2.13z1.0a  Refer to migration guide here for a recommended implementation using LangGraph: https://python.langchain.com/docs/versions/migrating_chains/map_reduce_chain/. See also LangGraph guides for map-reduce: https://langchain-ai.github.io/langgraph/how-tos/map-reduce/.)sinceremovalmessagec                      \ rS rSr% SrS\S'    S\S'    SrS\S	'   S
rS\S'   \   S               SS jj5       r	\
" SSS9r\SS j5       r\SS j5       r S     SS jjrSrg)MapReduceChain   zMap-reduce chain.r   combine_documents_chainr   text_splitter
input_textstr	input_keyoutput_text
output_keyNc                    [        XUS9n[        SUUS.U(       a  UO0 D6n	[        U	S9n
[        SUU
US.U(       a  UO0 D6nU " SUUUS.UD6$ )zDConstruct a map-reduce chain that uses the chain for map and reduce.)llmprompt	callbacks)	llm_chainr$   )r   )r%   reduce_documents_chainr$   )r   r   r$    )r   r   r   r   )clsr"   r#   r   r$   combine_chain_kwargsreduce_chain_kwargskwargsr%   stuff_chainr&   r   s               d/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_classic/chains/mapreduce.pyfrom_paramsMapReduceChain.from_params2   s     yI	) 

 ':"r

 "6$/"
 #: #
#9#
 (<#	#
  
$;'
 	
 	
    Tforbid)arbitrary_types_allowedextrac                    U R                   /$ )zExpect input key.)r   selfs    r-   
input_keysMapReduceChain.input_keysY   s     r0   c                    U R                   /$ )zReturn output key.)r    r5   s    r-   output_keysMapReduceChain.output_keys^   s       r0   c                   U=(       d    [         R                  " 5       nUR                  U R                  5      nU R                  R                  U5      nU Vs/ s H  n[        US9PM     nn0 UEU R                  R                  U0EnU R                  R                  UUR                  5       S9n	U R                  U	0$ s  snf )N)page_content)r$   )r   get_noop_managerpopr   r   
split_textr	   r   run	get_childr    )
r6   inputsrun_manager_run_managerdoc_texttextstextdocs_inputsoutputss
             r-   _callMapReduceChain._callc   s    
 #S&@&Q&Q&S::dnn-""--h78=>d+>#
#
((22D#
 ..22",,. 3 
 )) ?s   C r'   )NNN)r"   r
   r#   r   r   r   r$   r   r)   Mapping[str, Any] | Noner*   rN   r+   r   returnr   )rO   z	list[str])N)rC   dict[str, str]rD   z!CallbackManagerForChainRun | NonerO   rP   )__name__
__module____qualname____firstlineno____doc____annotations__r   r    classmethodr.   r   model_configpropertyr7   r:   rL   __static_attributes__r'   r0   r-   r   r      s     66,!Is!#J#  $9=8<

 #
 $	

 
 7
 6
 
 

 
B  $L
     ! ! :>** 7* 
	* *r0   r   N)#rU   
__future__r   collections.abcr   typingr   langchain_core._apir   langchain_core.callbacksr   r   langchain_core.documentsr	   langchain_core.language_modelsr
   langchain_core.promptsr   langchain_text_splittersr   pydanticr   langchain_classic.chainsr   langchain_classic.chains.baser   /langchain_classic.chains.combine_documents.baser   5langchain_classic.chains.combine_documents.map_reducer   0langchain_classic.chains.combine_documents.stuffr   langchain_classic.chains.llmr   r   r'   r0   r-   <module>rk      sp    # #  * J - < 5 1  9 / U Q 1 
	H		M*U M*	M*r0   