
    @h5                       S r SSKJr  SSK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Jr  SSKJr  SSKJr  SSKJr  \" \5      R6                  S-  r\R:                  " \S-  5      r\R:                  " \S-  5      r\R:                  " \S-  5      r \R:                  " \S-  5      r!SS.             SS jjr"\
" SSSS9 " S S\5      5       r#g)z/Chain for summarization with self-verification.    )annotationsN)Path)AnyOptional)
deprecated)CallbackManagerForChainRun)BaseLanguageModel)PromptTemplate)
ConfigDictmodel_validator)Chain)LLMChain)SequentialChainpromptszcreate_facts.txtzcheck_facts.txtzrevise_summary.txtzare_all_true_prompt.txtFverbosec               x    [        [        U USUS9[        U USUS9[        U USUS9[        U SUUS9/S/SS/US9$ )	N
assertions)llmprompt
output_keyr   checked_assertionsrevised_summaryall_true)r   r   r   r   summary)chainsinput_variablesoutput_variablesr   )r   r   )r   create_assertions_promptcheck_assertions_promptrevised_summary_promptare_all_true_promptr   s         g/var/www/html/shao/venv/lib/python3.13/site-packages/langchain/chains/llm_summarization_checker/base.py_load_sequential_chainr$      s     /'	 ./	 -,	 %*	'
4 #$&78;     z0.2.13zSee LangGraph guides for a variety of self-reflection and corrective strategies for question-answering and other tasks: https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_self_rag/z1.0)sincemessageremovalc                  j   \ rS rSr% SrS\S'   SrS\S'    \rS\S	'    \	r
S\S
'    \rS\S'    \rS\S'    SrS\S'   SrS\S'   SrS\S'    \" SSS9r\" SS9\S"S j5       5       r\S#S j5       r\S#S j5       r S$     S%S jjr\S&S j5       r\\\	\\S4               S'S  jj5       rS!rg)(LLMSummarizationCheckerChainE   a:  Chain for question-answering with self-verification.

Example:
    .. code-block:: python

        from langchain_community.llms import OpenAI
        from langchain.chains import LLMSummarizationCheckerChain
        llm = OpenAI(temperature=0.0)
        checker_chain = LLMSummarizationCheckerChain.from_llm(llm)
r   sequential_chainNzOptional[BaseLanguageModel]r   r
   r   r    r!   r"   querystr	input_keyresultr      int
max_checksTforbid)arbitrary_types_allowedextrabefore)modec                <   SU;   a  [         R                  " SSS9  SU;  az  US   bt  [        US   UR                  S[        5      UR                  S[
        5      UR                  S[        5      UR                  S	[        5      UR                  S
S5      S9US'   U$ )Nr   zDirectly instantiating an LLMSummarizationCheckerChain with an llm is deprecated. Please instantiate with sequential_chain argument or using the from_llm class method.   )
stacklevelr,   r   r    r!   r"   r   Fr   )warningswarnr$   getCREATE_ASSERTIONS_PROMPTCHECK_ASSERTIONS_PROMPTREVISED_SUMMARY_PROMPTARE_ALL_TRUE_PROMPT)clsvaluess     r#   raise_deprecation.LLMSummarizationCheckerChain.raise_deprecationq   s     F?MMQ 	 "/F5M4M-C5MJJ9;STJJ8:QRJJ79OPJJ46IJ"JJy%8.)* r%   c                    U R                   /$ )z/Return the singular input key.

:meta private:
)r/   selfs    r#   
input_keys'LLMSummarizationCheckerChain.input_keys   s     r%   c                    U R                   /$ )z0Return the singular output key.

:meta private:
)r   rH   s    r#   output_keys(LLMSummarizationCheckerChain.output_keys   s       r%   c                   U=(       d    [         R                  " 5       nSnSnS nXR                     nUnU(       d  XPR                  :  ay  U R	                  SU0UR                  5       S9nUS-  nUS   R                  5       S:X  a  O<U R                  (       a  [        US   5        US   nU(       d  XPR                  :  a  My  U(       d  S	n	[        U	5      eU R                  US   R                  5       0$ )
NFr   r   )	callbacks   r   Truer   zNo output from chain)r   get_noop_managerr/   r3   r,   	get_childstripr   print
ValueErrorr   )
rI   inputsrun_manager_run_managerr   countoutputoriginal_inputchain_inputmsgs
             r#   _call"LLMSummarizationCheckerChain._call   s    
 #S&@&Q&Q&S/$u6**K(&002 + F QJEj!'')V3||f./0 !23K u6 (CS/!(9!:!@!@!BCCr%   c                    g)Nllm_summarization_checker_chain rH   s    r#   _chain_type(LLMSummarizationCheckerChain._chain_type   s    0r%   Fc           	     2    [        UUUUUUS9nU " SXS.UD6$ )Nr   )r,   r   rd   )r$   )	rC   r   r   r    r!   r"   r   kwargschains	            r#   from_llm%LLMSummarizationCheckerChain.from_llm   s5     '$#"
 EEEfEEr%   rd   )rD   dictreturnr   )rm   z	list[str])N)rX   zdict[str, Any]rY   z$Optional[CallbackManagerForChainRun]rm   zdict[str, str])rm   r.   )r   r	   r   r
   r    r
   r!   r
   r"   r
   r   boolrh   r   rm   r*   )__name__
__module____qualname____firstlineno____doc____annotations__r   r?   r   r@   r    rA   r!   rB   r"   r/   r   r3   r   model_configr   classmethodrE   propertyrJ   rM   r`   re   rj   __static_attributes__rd   r%   r#   r*   r*   E   s   	 &%'+C	$+*/GnG.E^E-CNC*==IsJJV $L
 (#  $&     ! ! =ADD :D 
	D@ 1 1  4L2I1G.AFF #1F "0	F
 !/F ,F F F 
&F Fr%   r*   )r   r	   r   r
   r    r
   r!   r
   r"   r
   r   rn   rm   r   )$rs   
__future__r   r<   pathlibr   typingr   r   langchain_core._apir   langchain_core.callbacksr   langchain_core.language_modelsr	   langchain_core.prompts.promptr
   pydanticr   r   langchain.chains.baser   langchain.chains.llmr   langchain.chains.sequentialr   __file__parentPROMPTS_DIR	from_filer?   r@   rA   rB   r$   r*   rd   r%   r#   <module>r      s   5 "     * ? < 8 0 ' ) 78n##i/)33KBT4TU (22;AR3RS '11+@T2TU $..{=V/VW  '	',' ,' +	'
 (' ' 'T 
	U F5 FFr%   