a
    ag1                     @   s  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 deZejddfe	eeee eedddZ ejejddddddddf
dde	eeeeee ee	 ee	 ee e!eee! eedddZ"ejej#ddddfe	eeeeee	 ee eed	ddZ$d!e	eee eedd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                   @   s"   e Zd ZdZeeedddZdS )LoadingCallablez2Interface for loading the combine documents chain.)llmkwargsreturnc                 K   s   dS )z-Callable to load the combine documents chain.N )selfr   r   r   r   n/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain/chains/summarize/chain.py__call__   s    zLoadingCallable.__call__N)__name__
__module____qualname____doc__r   r   r	   r   r   r   r   r   r      s   r   textN)r   promptdocument_variable_nameverboser   r   c                 K   s$   t | ||d}tf |||d|S )Nr   r   r!   )	llm_chainr    r!   )r   r   )r   r   r    r!   r   r#   r   r   r   _load_stuff_chain   s    r$   i  )collapse_max_retries)r   
map_promptcombine_promptcombine_document_variable_name!map_reduce_document_variable_namecollapse_prompt
reduce_llmcollapse_llmr!   	token_max	callbacksr%   r   r   c                K   s   t | |||
d}|p| }t ||||
d}t||||
d}|d u rVd }|d urvtdn |p\| }tt ||||
d|d}t|||	||
|d}tf |||||
d|S )N)r   r   r!   r.   )r#   r    r!   r.   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r#   r    )combine_documents_chainZcollapse_documents_chainr-   r!   r.   r%   )r#   reduce_documents_chainr    r!   r.   )r   r   
ValueErrorr   r
   )r   r&   r'   r(   r)   r*   r+   r,   r!   r-   r.   r%   r   Z	map_chainZ_reduce_llmZreduce_chainr/   Zcollapse_chainZ_collapse_llmr0   r   r   r   _load_map_reduce_chain,   sh    	r2   Zexisting_answer)	r   question_promptrefine_promptr    initial_response_name
refine_llmr!   r   r   c                 K   s>   t | ||d}|p| }	t |	||d}
tf ||
|||d|S )Nr"   )Zinitial_llm_chainZrefine_llm_chainr    r5   r!   )r   r   )r   r3   r4   r    r5   r6   r!   r   Zinitial_chainZ_refine_llmZrefine_chainr   r   r   _load_refine_chaint   s    
r7   stuff)r   
chain_typer!   r   r   c                 K   sD   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.
    )r8   Z
map_reduceZrefinezGot unsupported chain type: z. Should be one of r!   )r$   r2   r7   r1   keys)r   r9   r!   r   Zloader_mappingr   r   r   load_summarize_chain   s    r;   )r8   N)&r   typingr   r   r   r   Zlangchain_core.callbacksr   Zlangchain_core.language_modelsr   Zlangchain_core.promptsr   Z'langchain.chains.combine_documents.baser	   Z-langchain.chains.combine_documents.map_reducer
   Z)langchain.chains.combine_documents.reducer   Z)langchain.chains.combine_documents.refiner   Z(langchain.chains.combine_documents.stuffr   Zlangchain.chains.llmr   Zlangchain.chains.summarizer   r   r   r   ZPROMPTstrboolr$   intr2   ZREFINE_PROMPTr7   r;   r   r   r   r   <module>   s   J  