
    AhO                       S r SSKJr  SSKJr  SSKJrJrJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJrJ r   SSK!J"r#   " S S\5      r$\#SSSSS.               S)S jjr%\ RD                  \ RL                  SSS.             S*S jjr'\RP                  \RR                  \RL                  SSSSSSSS.
                         S+S jjr*\RV                  \RX                  \RL                  S S!SSS".                   S,S# jjr-\
" S$S%S&S'9  S-         S.S( jj5       r.g)/z,Load question answering with sources chains.    )annotations)Mapping)AnyOptionalProtocol)
deprecated)BaseLanguageModel)BasePromptTemplate)BaseCombineDocumentsChain)MapReduceDocumentsChain)MapRerankDocumentsChain)ReduceDocumentsChain)RefineDocumentsChain)StuffDocumentsChain)LLMChain)map_reduce_promptrefine_promptsstuff_prompt)PROMPTc                  .    \ rS rSrSr      SS jrSrg)LoadingCallable   z2Interface for loading the combine documents chain.c                    g)z-Callable to load the combine documents chain.N )selfllmkwargss      `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/chains/qa_with_sources/loading.py__call__LoadingCallable.__call__    s        r   N)r   r	   r   r   returnr   )__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r!   r   r   r      s&    <<< < 
#	<r!   r   Fcontextscoreanswer)promptverbosedocument_variable_namerank_key
answer_keyc               6    [        XUS9n[        SUUUUS.UD6$ )Nr   r,   r-   )	llm_chainr/   r0   r.   r   )r   r   )r   r,   r-   r.   r/   r0   r   r3   s           r   _load_map_rerank_chainr4   (   s8     SAI" 5	
  r!   	summariesN)r,   document_promptr.   r-   c               6    [        XUS9n[        SUUUUS.UD6$ )Nr2   r3   r.   r6   r-   r   )r   r   )r   r,   r6   r.   r-   r   r3   s          r   _load_stuff_chainr9   <   s8     SAI 5'	
  r!   i  )
question_promptcombine_promptr6   combine_document_variable_name!map_reduce_document_variable_namecollapse_prompt
reduce_llmcollapse_llmr-   	token_maxc       
            [        XU	S9nU=(       d    U n[        XU	S9n[        UUUU	S9nUc  S nUb  Sn[        U5      eOU=(       d    U n[        [        UUU	S9UUS9n[        UUU
U	S9n[	        SUUUU	S.UD6$ )Nr2   r8   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r3   r.   r6   )combine_documents_chaincollapse_documents_chainrA   r-   )r3   reduce_documents_chainr.   r-   r   )r   r   
ValueErrorr   r   )r   r:   r;   r6   r<   r=   r>   r?   r@   r-   rA   r   	map_chain_reduce_llmreduce_chainrC   collapse_chainmsg_collapse_llmrE   s                       r   _load_map_reduce_chainrM   O   s     S'JI#KGTL1='	 #>  S/! $ %+,!&
 $B+
 2 7!/	 # 5@	
  r!   context_strexisting_answer)r:   refine_promptr6   r.   initial_response_name
refine_llmr-   c          
     d    [        XUS9n	U=(       d    U n
[        XUS9n[        SU	UUUUUS.UD6$ )Nr2   )initial_llm_chainrefine_llm_chainr.   rQ   r6   r-   r   )r   r   )r   r:   rP   r6   r.   rQ   rR   r-   r   initial_chain_refine_llmrefine_chains               r   _load_refine_chainrY      sT     gNM#K7SL '%53'  r!   z0.2.13z1.0aD  This function is deprecated. Refer to this guide on retrieval and question answering with sources: https://python.langchain.com/docs/how_to/qa_sources/
See also the following migration guides for replacements based on `chain_type`:
stuff: https://python.langchain.com/docs/versions/migrating_chains/stuff_docs_chain
map_reduce: https://python.langchain.com/docs/versions/migrating_chains/map_reduce_chain
refine: https://python.langchain.com/docs/versions/migrating_chains/refine_chain
map_rerank: https://python.langchain.com/docs/versions/migrating_chains/map_rerank_docs_chain
)sinceremovalmessagec                    [         [        [        [        S.nX;  a!  SU SUR	                  5        3n[        U5      eXA   nU" U 4SU0UD6$ )a  Load a question answering with sources 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", "refine" and "map_rerank".
    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 question answering with sources.
)stuff
map_reducerefine
map_rerankzGot unsupported chain type: z. Should be one of r-   )r9   rM   rY   r4   keysrF   )r   
chain_typer-   r   loader_mappingrK   _funcs          r   load_qa_with_sources_chainrf      sn    D #,$,	5N '*:, 7  . 3 3 568 	 o+7E0g000r!   )r   r	   r,   r
   r-   boolr.   strr/   rh   r0   rh   r   r   r"   r   )r   r	   r,   r
   r6   r
   r.   rh   r-   Optional[bool]r   r   r"   r   )r   r	   r:   r
   r;   r
   r6   r
   r<   rh   r=   rh   r>   zOptional[BasePromptTemplate]r?   Optional[BaseLanguageModel]r@   rj   r-   ri   rA   intr   r   r"   r   )r   r	   r:   r
   rP   r
   r6   r
   r.   rh   rQ   rh   rR   rj   r-   ri   r   r   r"   r   )r^   N)
r   r	   rc   rh   r-   ri   r   r   r"   r   )/r'   
__future__r   collections.abcr   typingr   r   r   langchain_core._apir   langchain_core.language_modelsr	   langchain_core.promptsr
   'langchain.chains.combine_documents.baser   -langchain.chains.combine_documents.map_reducer   -langchain.chains.combine_documents.map_rerankr   )langchain.chains.combine_documents.reducer   )langchain.chains.combine_documents.refiner   (langchain.chains.combine_documents.stuffr   langchain.chains.llmr    langchain.chains.qa_with_sourcesr   r   r   5langchain.chains.question_answering.map_rerank_promptr   MAP_RERANK_PROMPTr   r4   EXAMPLE_PROMPTr9   QUESTION_PROMPTCOMBINE_PROMPTrM   DEFAULT_TEXT_QA_PROMPTDEFAULT_REFINE_PROMPTrY   rf   r   r!   r   <module>r      s   2 " # * * * < 5 M Q Q J J H ) 

<h < "3"+	  	
      . ".!4!4*6*E*E"-"	  (	
     , +<*K*K):)I)I*;*J*J*5-648.204"7	7 (7 '	7
 (7 %(7 (+7 27 ,7 .7 7 7 7 7z +9*O*O(6(L(L*8*G*G"/!2.2"	 ( &	
 (    ,   4 
	j	" "1	11 1 	1
 11r!   