
    Ah%                        S 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
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.S\S\S\&S\'S\'S\'S\\
   S \S!\S"\4S# jjr(SSSSSS$.S\S\\   S\'S\\&   S\\
   S \S!\S"\4S% jjr)SSS&SSSSSSSS'S(.S\S)\\   S*\\   S+\'S,\'S-\\   S.\\   S/\\   S\\&   S\\
   S \S0\*S!\S"\4S1 jjr+SSS2S3SSSSS4.S\S)\\   S5\\   S\'S6\'S7\\   S\\&   S\\
   S \S!\S"\4S8 jjr,\" S9S:S;S<9   S?S\S=\'S\\&   S\\
   S!\S"\4S> jj5       r-g)@zLoad question answering chains.    )Mapping)AnyOptionalProtocol)
deprecated)BaseCallbackManager	Callbacks)BaseLanguageModel)BasePromptTemplate)ReduceDocumentsChain)BaseCombineDocumentsChain)MapReduceDocumentsChain)MapRerankDocumentsChain)RefineDocumentsChain)StuffDocumentsChain)LLMChain)map_reduce_promptrefine_promptsstuff_prompt)PROMPTc                   .    \ rS rSrSrS\S\S\4S jrSr	g)	LoadingCallable   z2Interface for loading the combine documents chain.llmkwargsreturnc                     g)z-Callable to load the combine documents chain.N )selfr   r   s      a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/chains/question_answering/chain.py__call__LoadingCallable.__call__   s        r   N)
__name__
__module____qualname____firstlineno____doc__r
   r   r   r!   __static_attributes__r   r#   r    r   r      s&    <<< < 
#	<r#   r   FcontextscoreanswerN)promptverbosedocument_variable_namerank_key
answer_keycallback_manager	callbacksr   r-   r.   r/   r0   r1   r2   r3   r   r   c          
      @    [        U UUUUS9n	[        SU	UUUUUS.UD6$ )Nr   r-   r.   r2   r3   )	llm_chainr0   r1   r/   r.   r2   r   )r   r   )
r   r-   r.   r/   r0   r1   r2   r3   r   r6   s
             r    _load_map_rerank_chainr7   '   sM     )I # 5)  r#   )r-   r/   r.   r2   r3   c          	          U=(       d    [         R                  R                  U 5      n[        U UUUUS9n[	        SUUUUUS.UD6$ )Nr5   r6   r/   r.   r2   r3   r   )r   PROMPT_SELECTOR
get_promptr   r   )	r   r-   r/   r.   r2   r3   r   _promptr6   s	            r    _load_stuff_chainr=   E   se     D44??DG)I  5)  r#   	summariesi  )question_promptcombine_promptcombine_document_variable_name!map_reduce_document_variable_namecollapse_prompt
reduce_llmcollapse_llmr.   r2   r3   	token_maxr?   r@   rA   rB   rC   rD   rE   rF   c          
         U=(       d    [         R                  R                  U 5      nU=(       d    [         R                  R                  U 5      n[	        U UUU	U
S9nU=(       d    U n[	        UUUU	U
S9n[        U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U	U
S9UUU	S9n[        UUUUS9n[        SUUUUU	U
S.UD6$ )Nr5   r9   zfcollapse_llm provided, but collapse_prompt was not: please provide one or stop providing collapse_llm.)r6   r/   r.   r2   )combine_documents_chaincollapse_documents_chainrF   r.   )r6   r/   reduce_documents_chainr.   r2   r3   r   )	r   QUESTION_PROMPT_SELECTORr;   COMBINE_PROMPT_SELECTORr   r   
ValueErrorr   r   )r   r?   r@   rA   rB   rC   rD   rE   r.   r2   r3   rF   r   _question_prompt_combine_prompt	map_chain_reduce_llmreduce_chainrH   collapse_chainmsg_collapse_llmrJ   s                          r    _load_map_reduce_chainrV   b   sQ   " 	U,EEPPQTU  	S+CCNNsS  )I #K)L 2=) #>  S/! $ %+,!&!1# $B-
 2 7!/	 # @5)  r#   context_strexisting_answer)r?   refine_promptr/   initial_response_name
refine_llmr.   r2   r3   rY   rZ   r[   c                   U=(       d    [         R                  R                  U 5      n
U=(       d    [         R                  R                  U 5      n[	        U U
UUUS9nU=(       d    U n[	        UUUUUS9n[        SUUUUUUUS.U	D6$ )Nr5   )initial_llm_chainrefine_llm_chainr/   rZ   r.   r2   r3   r   )r   rK   r;   REFINE_PROMPT_SELECTORr   r   )r   r?   rY   r/   rZ   r[   r.   r2   r3   r   rN   _refine_promptinitial_chain_refine_llmrefine_chains                  r    _load_refine_chainrd      s     	R>BBMMcR  # n&K&K&V&V'N )M #K)L   	'%53)	 	 	r#   z0.2.13z1.0a1  This class is deprecated. See 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

See also guides on retrieval and question-answering here: https://python.langchain.com/docs/how_to/#qa-with-rag)sinceremovalmessage
chain_typec                     [         [        [        [        S.nX;  a!  SU SUR	                  5        3n[        U5      eXQ   " U 4UUS.UD6$ )a  Load question answering 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", "map_rerank", 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.
    callback_manager: Callback manager to use for the chain.

Returns:
    A chain to use for question answering.
)stuff
map_reducerefine
map_rerankzGot unsupported chain type: z. Should be one of )r.   r2   )r=   rV   rd   r7   keysrM   )r   rh   r.   r2   r   loader_mappingrT   s          r    load_qa_chainrp      sy    F #,$,	5N '*:, 7  . 3 3 568 	 o%) 	 r#   )rj   NN).r(   collections.abcr   typingr   r   r   langchain_core._apir   langchain_core.callbacksr   r	   langchain_core.language_modelsr
   langchain_core.promptsr   langchain.chainsr   'langchain.chains.combine_documents.baser   -langchain.chains.combine_documents.map_reducer   -langchain.chains.combine_documents.map_rerankr   )langchain.chains.combine_documents.refiner   (langchain.chains.combine_documents.stuffr   langchain.chains.llmr   #langchain.chains.question_answeringr   r   r   5langchain.chains.question_answering.map_rerank_promptr   MAP_RERANK_PROMPTr   boolstrr7   r=   intrV   rd   rp   r   r#   r    <module>r      sK   % # * * * C < 5 1 M Q Q J H ) 

<h < "3"+6:	  	
     23   B ,0"+"6:	 '(  	
 d^ 23   @ 5937*5-648.204"6:Q	Q 01Q /0	Q
 %(Q (+Q 01Q *+Q ,-Q d^Q 23Q Q Q Q Qn 5926"/!2.2"6:+	+ 01+ ./	+
  + + *++ d^+ 23+ + + +\ 
	@	  "6:	%	%% d^% 23	%
 % %%r#   