HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/langchain/chains/__pycache__/mapreduce.cpython-310.pyc
o

���g�@s�dZddlmZddlmZmZmZmZmZddl	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddl m!Z!ddl"m#Z#e
dddd�Gdd�de��Z$dS)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)�Any�Dict�List�Mapping�Optional)�
deprecated)�CallbackManagerForChainRun�	Callbacks��Document)�BaseLanguageModel)�BasePromptTemplate)�TextSplitter)�
ConfigDict)�ReduceDocumentsChain)�Chain)�BaseCombineDocumentsChain)�MapReduceDocumentsChain)�StuffDocumentsChain)�LLMChainz0.2.13z1.0aRefer 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@s�eZdZUdZded<	ded<	dZded<d	Zded
<e			d(d)dd��Ze	ddd�Z
ed*dd��Zed*d d!��Z
	d+d,d&d'�ZdS)-�MapReduceChainzMap-reduce chain.r�combine_documents_chainr�
text_splitter�
input_text�str�	input_key�output_text�
output_keyN�llmr
�promptr�	callbacksr
�combine_chain_kwargs�Optional[Mapping[str, Any]]�reduce_chain_kwargs�kwargsr�returncKsht|||d�}td||d�|r|ni��}	t|	d�}
td||
|d�|r%|ni��}|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$)rrr$N�)rrrr)�clsr"r#rr$r%r'r(r*�stuff_chainr+rr,r,�E/usr/local/lib/python3.10/dist-packages/langchain/chains/mapreduce.py�from_params/s0�
���
���zMapReduceChain.from_paramsT�forbid)�arbitrary_types_allowed�extra�	List[str]cC�|jgS)z2Expect input key.

        :meta private:
        )r��selfr,r,r/�
input_keysV�zMapReduceChain.input_keyscCr5)z3Return output key.

        :meta private:
        )r!r6r,r,r/�output_keys^r9zMapReduceChain.output_keys�inputs�Dict[str, str]�run_manager�$Optional[CallbackManagerForChainRun]c	Csd|pt��}|�|j�}|j�|�}dd�|D�}i|�|jj|i�}|jj||��d�}|j	|iS)NcSsg|]}t|d��qS))�page_contentr)�.0�textr,r,r/�
<listcomp>osz(MapReduceChain._call.<locals>.<listcomp>)r$)
r	�get_noop_manager�poprr�
split_textr�run�	get_childr!)	r7r;r=�_run_manager�doc_text�texts�docs�_inputs�outputsr,r,r/�_callfs���
zMapReduceChain._call)NNN)r"r
r#rrrr$r
r%r&r'r&r(rr)r)r)r4)N)r;r<r=r>r)r<)�__name__�
__module__�__qualname__�__doc__�__annotations__rr!�classmethodr0r�model_config�propertyr8r:rNr,r,r,r/rs.
�!�
�rN)%rR�
__future__r�typingrrrrr�langchain_core._apir�langchain_core.callbacksr	r
�langchain_core.documentsr�langchain_core.language_modelsr
�langchain_core.promptsr�langchain_text_splittersr�pydanticr�langchain.chainsr�langchain.chains.baser�'langchain.chains.combine_documents.baser�-langchain.chains.combine_documents.map_reducer�(langchain.chains.combine_documents.stuffr�langchain.chains.llmrrr,r,r,r/�<module>s,�