Ë
    ´Œj5  ã                  óÈ  — d Z ddlmZ ddlZddlmZ ddl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mZ ddlmZ ddlmZ ddlmZ  ee«      j6                  dz  Z ej:                  edz  «      Z ej:                  edz  «      Z ej:                  edz  «      Z  ej:                  edz  «      Z!ddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z" e
ddd¬«       G d„ de«      «       Z#y)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               ó–   — t        t        | |d|¬«      t        | |d|¬«      t        | |d|¬«      t        | d||¬«      gdgddg|¬«      S )	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         úy/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/llm_summarization_checker/base.pyÚ_load_sequential_chainr$      s   € ô äØØ/Ø'Øô	ô ØØ.Ø/Øô	ô ØØ-Ø,Øô	ô ØØ%Ø*Øô	ð'
ð4 #˜Ø$Ð&7Ð8Øô;ð ó    z0.2.13zÂSee 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                  ó^  — e Zd ZU dZded<   dZded<   	 eZded<   	 eZ	ded	<   	 e
Zded
<   	 eZded<   	 dZded<   dZded<   dZded<   	  edd¬«      Z ed¬«      ed d„«       «       Zed!d„«       Zed!d„«       Z	 d"	 	 	 	 	 d#d„Zed$d„«       Zeeee
edf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%d„«       Zy)&ÚLLMSummarizationCheckerChainaV  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                ó<  — d|v r—t        j                  dd¬«       d|vr||d   �wt        |d   |j                  dt        «      |j                  dt
        «      |j                  dt        «      |j                  d	t        «      |j                  d
d«      ¬«      |d<   |S )Nr   z§Directly 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_deprecationz.LLMSummarizationCheckerChain.raise_deprecationq   s¡   € ð �F‰?Ü�M‰MðQð õ	ð "¨Ñ/°F¸5±MÐ4MÜ-CØ˜5‘MØ—J‘JÐ9Ô;SÓTØ—J‘JÐ8Ô:QÓRØ—J‘JÐ7Ô9OÓPØ—J‘JÐ4Ô6IÓJØ"ŸJ™J y°%Ó8ô.�Ð)Ñ*ð ˆr%   c                ó   — | j                   gS )z?Return the singular input key.

        :meta private:
        )r.   ©Úselfs    r#   Ú
input_keysz'LLMSummarizationCheckerChain.input_keys†   s   € ð —‘ÐÐr%   c                ó   — | j                   gS )z@Return the singular output key.

        :meta private:
        )r   rF   s    r#   Úoutput_keysz(LLMSummarizationCheckerChain.output_keysŽ   s   € ð —‘Ð Ð r%   c                ó¾  — |xs t        j                  «       }d}d}d }|| j                     }|}|s|| j                  k  rp| j	                  d|i|j                  «       ¬«      }|dz  }|d   j                  «       dk(  rn1| j                  rt        |d   «       |d   }|s|| j                  k  rŒp|sd	}	t        |	«      ‚| j                  |d   j                  «       iS )
NFr   r   )Ú	callbacksé   r   ÚTruer   zNo output from chain)r   Úget_noop_managerr.   r2   r+   Ú	get_childÚstripr   ÚprintÚ
ValueErrorr   )
rG   ÚinputsÚrun_managerÚ_run_managerr   ÚcountÚoutputÚoriginal_inputÚchain_inputÚmsgs
             r#   Ú_callz"LLMSummarizationCheckerChain._call–   s÷   € ð
 #ÒSÔ&@×&QÑ&QÓ&SˆØˆØˆØˆØ §¡Ñ/ˆØ$ˆÙ˜u t§¡Ò6Ø×*Ñ*Ø˜KÐ(Ø&×0Ñ0Ó2ð +ó ˆFð �Q‰JˆEà�jÑ!×'Ñ'Ó)¨VÒ3Øà�|Š|Ü�fÐ.Ñ/Ô0à Ð!2Ñ3ˆKñ ˜u t§¡Ó6ñ Ø(ˆCÜ˜S“/Ð!à—‘ Ð(9Ñ!:×!@Ñ!@Ó!BÐCÐCr%   c                 ó   — y)NÚllm_summarization_checker_chain© rF   s    r#   Ú_chain_typez(LLMSummarizationCheckerChain._chain_type¶   s   € à0r%   Fc                ó:   — t        ||||||¬«      } | d||dœ|¤ŽS )Nr   )r+   r   r_   )r$   )	rB   r   r   r    r!   r"   r   ÚkwargsÚchains	            r#   Úfrom_llmz%LLMSummarizationCheckerChain.from_llmº   s7   € ô 'ØØ$Ø#Ø"ØØô
ˆñ ÐE E°7ÑE¸fÑEÐEr%   )rC   ÚdictÚreturnr   )rf   z	list[str])N)rT   zdict[str, Any]rU   z$Optional[CallbackManagerForChainRun]rf   zdict[str, str])rf   r-   )r   r	   r   r
   r    r
   r!   r
   r"   r
   r   Úboolrb   r   rf   r*   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r>   r   r?   r    r@   r!   rA   r"   r.   r   r2   r   Úmodel_configr   ÚclassmethodrD   ÚpropertyrH   rJ   r\   r`   rd   r_   r%   r#   r*   r*   E   s�  … ñ	ð &Ó%Ø'+€CÐ	$Ó+Ø*à/GÐ˜nÓGØØ.EÐ˜^ÓEØØ-CÐ˜NÓCØØ*=Ð˜Ó=Øà€IˆsÓØ€J�ÓØ€J�ÓØVáØ $Øô€Lñ
 ˜(Ô#Øòó ó $ðð& ò ó ð ð ò!ó ð!ð =AðDàðDð :ðDð 
ó	Dð@ ò1ó ð1ð ð 4LØ2IØ1GØ.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   rg   rf   r   )$rk   Ú
__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?   r@   rA   r$   r*   r_   r%   r#   Ú<module>r      s%  ðÙ 5å "ã Ý ß  å *Ý ?Ý <Ý 8ß 0å 'Ý )Ý 7á�8‹n×#Ñ# iÑ/€à3˜>×3Ñ3°KÐBTÑ4TÓUÐ Ø2˜.×2Ñ2°;ÐARÑ3RÓSÐ Ø1˜×1Ñ1°+Ð@TÑ2TÓUÐ Ø.�n×.Ñ.¨{Ð=VÑ/VÓWÐ ð ñ'Ø	ð'à,ð'ð ,ð'ð +ð	'ð
 (ð'ð ð'ð ó'ñT Ø
ð	Uð ôôF 5ó FóñFr%   