
    Ng1                     <   d Z ddlmZ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f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f
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j#        dd%ddfde	d&ed'eded(ed)ee	         dee         dedefd*Z$	 	 d.de	d,edee         dedef
d-Z%dS )/zLoad summarizing chains.    )AnyMapping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dS )LoadingCallablez2Interface for loading the combine documents chain.llmkwargsreturnc                     dS )z-Callable to load the combine documents chain.N )selfr   r   s      \/var/www/html/ai-engine/env/lib/python3.11/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      sF        <<<$<03<	"< < < < < <r   r   textNr   promptdocument_variable_nameverboser   r   c                 F    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)      sG     SAAAI 5  	  r   i  )collapse_max_retries
map_promptcombine_promptcombine_document_variable_name!map_reduce_document_variable_namecollapse_prompt
reduce_llmcollapse_llm	token_max	callbacksr*   c          	      B   t          | |||
          }|p| }t          ||||
          }t          ||||
          }|d }|t          d          n&|p| }t          t          ||||
          |          }t          |||	||
|          }t	          d|||||
d|S )N)r   r#   r%   r3   )r(   r$   r%   r3   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r(   r$   )combine_documents_chaincollapse_documents_chainr2   r%   r3   r*   )r(   reduce_documents_chainr$   r%   r3   r   )r   r   
ValueErrorr   r   )r   r+   r,   r-   r.   r/   r0   r1   r%   r2   r3   r*   r   	map_chain_reduce_llmreduce_chainr5   collapse_chain_collapse_llmr7   s                       r   _load_map_reduce_chainr>   ,   sF     	  I #K	  L 2=	   #>   $ %+,!&#	   $B
 
 
 2 7!/1   # 5@    r   existing_answerquestion_promptrefine_promptinitial_response_name
refine_llmc           	      v    t          | ||          }|p| }	t          |	||          }
t          d||
|||d|S )Nr'   )initial_llm_chainrefine_llm_chainr$   rB   r%   r   )r   r   )r   r@   rA   r$   rB   rC   r%   r   initial_chain_refine_llmrefine_chains              r   _load_refine_chainrJ   t   sk     _gNNNM#KM7SSSL '%53    r   stuff
chain_typec                     t           t          t          d}||vr't          d| d|                                            ||         | 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.
    )rK   
map_reducerefinezGot unsupported chain type: z. Should be one of r%   )r)   r>   rJ   r8   keys)r   rL   r%   r   loader_mappings        r   load_summarize_chainrR      s    & #,$5 5N
 ''8: 8 8 . 3 3 5 58 8
 
 	
 &>*%cEE7EfEEEr   )rK   N)&r!   typingr   r   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_PROMPTrJ   rR   r   r   r   <module>rc      s~     3 3 3 3 3 3 3 3 3 3 3 3 . . . . . . < < < < < < 5 5 5 5 5 5 M M M M M M Q Q Q Q Q Q J J J J J J J J J J J J H H H H H H ) ) ) ) ) ) V V V V V V V V V V< < < < <h < < < ".!4"("	 	   d^	
     & &7%=):)A*0-348.204"E +/E E E	E"E 'E %(	E
 (+E 01E *+E ,-E d^E E E #3-E E E E E ET +9*?(6(D"(!2.2" 	' &  	
  *+ d^     2 "F F	FF d^F 	F
 F F F F F Fr   