§
    m
¼iD  ã                  ó  — d 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 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 ddl m!Z!  eddd¬¦  «         G d„ de¦  «        ¦   «         Z"dS )z‰Map-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.0z¦Refer to migration guide here for a recommended implementation using LangGraph: https://docs.langchain.com/oss/python/langgraph/graph-api#map-reduce-and-the-send-api.)ÚsinceÚremovalÚmessagec                  ó¾   — e Zd ZU dZded<   	 ded<   	 dZded<   d	Zded
<   e	 	 	 d$d%d„¦   «         Z e	dd¬¦  «        Z
ed&d„¦   «         Zed&d„¦   «         Z	 d'd(d#„ZdS ))ÚMapReduceChainzMap-reduce chain.r   Úcombine_documents_chainr   Útext_splitterÚ
input_textÚstrÚ	input_keyÚoutput_textÚ
output_keyNÚllmr   Úpromptr   Ú	callbacksr   Úcombine_chain_kwargsúMapping[str, Any] | NoneÚreduce_chain_kwargsÚkwargsr   Úreturnc                ó¤   — t          |||¬¦  «        }t          d||dœ|pi ¤Ž}	t          |	¬¦  «        }
t          d||
|dœ|pi ¤Ž} | d|||dœ|¤ŽS )zDConstruct a map-reduce chain that uses the chain for map and reduce.)r!   r"   r#   )Ú	llm_chainr#   )r   )r*   Úreduce_documents_chainr#   )r   r   r#   © )r   r   r   r   )Úclsr!   r"   r   r#   r$   r&   r'   r*   Ústuff_chainr+   r   s               ú–C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_classic/chains/mapreduce.pyÚfrom_paramszMapReduceChain.from_params1   sÇ   € õ  ¨V¸yÐIÑIÔIˆ	Ý)ð 
ØØð
ð 
ð #Ð( bð
ð 
ˆõ
 "6Ø$/ð"
ñ "
ô "
Ðõ #:ð #
ØØ#9Øð#
ð #
ð $Ð) rð	#
ð #
Ðð ˆsð 
Ø$;Ø'Øð
ð 
ð ð	
ð 
ð 	
ó    TÚforbid)Úarbitrary_types_allowedÚextraú	list[str]c                ó   — | j         gS )zExpect input key.)r   ©Úselfs    r/   Ú
input_keyszMapReduceChain.input_keysX   s   € ð ”ÐÐr1   c                ó   — | j         gS )zReturn output key.)r    r7   s    r/   Úoutput_keyszMapReduceChain.output_keys]   s   € ð ”Ð Ð r1   Úinputsúdict[str, str]Úrun_managerú!CallbackManagerForChainRun | Nonec                ó>  — |pt          j        ¦   «         }|                     | j        ¦  «        }| j                             |¦  «        }d„ |D ¦   «         }i |¥| j        j        |i¥}| j                             ||                     ¦   «         ¬¦  «        }| j	        |iS )Nc                ó.   — g | ]}t          |¬ ¦  «        ‘ŒS ))Úpage_contentr	   )Ú.0Útexts     r/   ú
<listcomp>z(MapReduceChain._call.<locals>.<listcomp>k   s#   € Ð>Ð>Ð>°• dÐ+Ñ+Ô+Ð>Ð>Ð>r1   )r#   )
r   Úget_noop_managerÚpopr   r   Ú
split_textr   ÚrunÚ	get_childr    )	r8   r<   r>   Ú_run_managerÚdoc_textÚtextsÚdocsÚ_inputsÚoutputss	            r/   Ú_callzMapReduceChain._callb   s¸   € ð
 #ÐSÕ&@Ô&QÑ&SÔ&Sˆà—:’:˜dœnÑ-Ô-ˆØÔ"×-Ò-¨hÑ7Ô7ˆØ>Ð>¸Ð>Ñ>Ô>ˆð#
Øð#
àÔ(Ô2°Dð#
ð #
ˆð Ô.×2Ò2ØØ"×,Ò,Ñ.Ô.ð 3ñ 
ô 
ˆð ” Ð)Ð)r1   )NNN)r!   r   r"   r   r   r   r#   r   r$   r%   r&   r%   r'   r   r(   r   )r(   r5   )N)r<   r=   r>   r?   r(   r=   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r    Úclassmethodr0   r   Úmodel_configÚpropertyr9   r;   rQ   r,   r1   r/   r   r      s	  € € € € € € ð Ðà6Ð6Ð6Ñ6Ø,ØÐÐÑØØ!€IÐ!Ð!Ð!Ñ!Ø#€JÐ#Ð#Ð#Ñ#àð  $Ø9=Ø8<ð
ð 
ð 
ð 
ñ „[ð
ðB :Ø $Øðñ ô €Lð
 ð ð  ð  ñ „Xð ð ð!ð !ð !ñ „Xð!ð :>ð*ð *ð *ð *ð *ð *ð *r1   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,   r1   r/   ú<module>rj      s¯  ððð ð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ -Ð -Ð -Ð -Ð -Ð -Ø <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø /Ð /Ð /Ð /Ð /Ð /Ø UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð QÐ PÐ PÐ PÐ PÐ PØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ð €Ø
Øð	ð	ñ ô ðM*ð M*ð M*ð M*ð M*Uñ M*ô M*ñô ðM*ð M*ð M*r1   