§
    ™Štjd  ã                  ó  — 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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2.0.0zlangchain.agents.create_agentz�For map-reduce branching, build a LangGraph using the Send API. See https://docs.langchain.com/oss/python/langgraph/use-graph-api#map-reduce-and-the-send-api)ÚsinceÚremovalÚalternativeÚaddendumc                  ó¾   — 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               ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/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    r0   Ú
input_keyszMapReduceChain.input_keysX   s   € ð ”ÐÐr2   c                ó   — | j         gS )zReturn output key.)r!   r8   s    r0   Úoutput_keyszMapReduceChain.output_keys]   s   € ð ”Ð Ð r2   Ú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     r0   ú
<listcomp>z(MapReduceChain._call.<locals>.<listcomp>k   s#   € Ð>Ð>Ð>°• dÐ+Ñ+Ô+Ð>Ð>Ð>r2   )r$   )
r   Úget_noop_managerÚpopr   r   Ú
split_textr   ÚrunÚ	get_childr!   )	r9   r=   r?   Ú_run_managerÚdoc_textÚtextsÚdocsÚ_inputsÚoutputss	            r0   Ú_callzMapReduceChain._callb   s¸   € ð
 #ÐSÕ&@Ô&QÑ&SÔ&Sˆà—:’:˜dœnÑ-Ô-ˆØÔ"×-Ò-¨hÑ7Ô7ˆØ>Ð>¸Ð>Ñ>Ô>ˆð#
Øð#
àÔ(Ô2°Dð#
ð #
ˆð Ô.×2Ò2ØØ"×,Ò,Ñ.Ô.ð 3ñ 
ô 
ˆð ” Ð)Ð)r2   )NNN)r"   r   r#   r   r   r   r$   r   r%   r&   r'   r&   r(   r   r)   r   )r)   r6   )N)r=   r>   r?   r@   r)   r>   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r!   Úclassmethodr1   r   Úmodel_configÚpropertyr:   r<   rR   r-   r2   r0   r   r      s	  € € € € € € ð Ðà6Ð6Ð6Ñ6Ø,ØÐÐÑØØ!€IÐ!Ð!Ð!Ñ!Ø#€JÐ#Ð#Ð#Ñ#àð  $Ø9=Ø8<ð
ð 
ð 
ð 
ñ „[ð
ðB �:Ø $Øðñ ô €Lð
 ð ð  ð  ñ „Xð ð ð!ð !ð !ñ „Xð!ð :>ð*ð *ð *ð *ð *ð *ð *r2   r   N)#rV   Ú
__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-   r2   r0   ú<module>rk      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ð €Ø
ØØ/ð	dðñ ô ðM*ð M*ð M*ð M*ð M*�Uñ M*ô M*ñô ðM*ð M*ð M*r2   