Ë
    ´ŒjW  ã                  óú   — d Z ddlmZ ddl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mZmZmZ ddlmZ 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z eddd¬«       G d„ de«      «       Zy)z4Chain for question-answering with self-verification.é    )ÚannotationsN)ÚAnyÚOptional)Ú
deprecated)ÚCallbackManagerForChainRun)ÚBaseLanguageModel)ÚPromptTemplate)Ú
ConfigDictÚmodel_validator)ÚChain)ÚLLMChain)ÚCHECK_ASSERTIONS_PROMPTÚCREATE_DRAFT_ANSWER_PROMPTÚLIST_ASSERTIONS_PROMPTÚREVISED_ANSWER_PROMPT)ÚSequentialChainc                ó    — t        | |d¬«      }t        | |d¬«      }t        | |d¬«      }t        | |d¬«      }||||g}	t        |	dgdgd¬«      S )	NÚ	statement)ÚllmÚpromptÚ
output_keyÚ
assertionsÚchecked_assertionsÚrevised_statementÚquestionT)ÚchainsÚinput_variablesÚoutput_variablesÚverbose)r   r   )
r   Úcreate_draft_answer_promptÚlist_assertions_promptÚcheck_assertions_promptÚrevised_answer_promptÚcreate_draft_answer_chainÚlist_assertions_chainÚcheck_assertions_chainÚrevised_answer_chainr   s
             úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/llm_checker/base.pyÚ*_load_question_to_checked_assertions_chainr)      s�   € ô !)ØØ)Øô!Ðô
 %ØØ%ØôÐô
 &ØØ&Ø'ôÐô
 $ØØ$Ø&ôÐð 	"ØØØð	€Fô ØØ#˜Ø-Ð.Øô	ð ó    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                  óH  — 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<    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f	 	 	 	 	 	 	 	 	 	 	 	 	 d!d„«       Zy)"ÚLLMCheckerChaina<  Chain for question-answering with self-verification.

    Example:
        .. code-block:: python

            from langchain_community.llms import OpenAI
            from langchain.chains import LLMCheckerChain
            llm = OpenAI(temperature=0.7)
            checker_chain = LLMCheckerChain.from_llm(llm)
    r   Ú$question_to_checked_assertions_chainNzOptional[BaseLanguageModel]r   r	   r    r!   r"   r#   ÚqueryÚstrÚ	input_keyÚresultr   TÚforbid)Úarbitrary_types_allowedÚextraÚbefore)Úmodec           
     ó  — d|v r‡t        j                  dd¬«       d|vrl|d   �gt        |d   |j                  dt        «      |j                  dt
        «      |j                  dt        «      |j                  d	t        «      «      }||d<   |S )
Nr   z¥Directly instantiating an LLMCheckerChain with an llm is deprecated. Please instantiate with question_to_checked_assertions_chain or using the from_llm class method.é   )Ú
stacklevelr0   r    r!   r"   r#   )ÚwarningsÚwarnr)   Úgetr   r   r   r   )ÚclsÚvaluesr0   s      r(   Úraise_deprecationz!LLMCheckerChain.raise_deprecationk   s¦   € ð �F‰?Ü�M‰Mð6ð õ	ð 7¸fÑDØ˜5‘MÐ-ô ?Ø˜u™ØŸ
™
Ø8Ü6óð Ÿ
™
Ð#;Ô=SÓTØŸ
™
Ð#<Ô>UÓVØŸ
™
Ð#:Ô<QÓRó	ð 5ð 9ð Ð=Ñ>ð ˆr*   c                ó   — | j                   gS )z?Return the singular input key.

        :meta private:
        )r3   ©Úselfs    r(   Ú
input_keyszLLMCheckerChain.input_keysŠ   s   € ð —‘ÐÐr*   c                ó   — | j                   gS )z@Return the singular output key.

        :meta private:
        )r   rD   s    r(   Úoutput_keyszLLMCheckerChain.output_keys’   s   € ð —‘Ð Ð r*   c                ó¸   — |xs t        j                  «       }|| j                     }| j                  d|i|j	                  «       ¬«      }| j
                  |d   iS )Nr   )Ú	callbacksr   )r   Úget_noop_managerr3   r0   Ú	get_childr   )rE   ÚinputsÚrun_managerÚ_run_managerr   Úoutputs         r(   Ú_callzLLMCheckerChain._callš   sf   € ð
 #ÒSÔ&@×&QÑ&QÓ&SˆØ˜$Ÿ.™.Ñ)ˆà×:Ñ:Ø˜Ð"Ø"×,Ñ,Ó.ð ;ó 
ˆð —‘ Ð(;Ñ!<Ð=Ð=r*   c                 ó   — y)NÚllm_checker_chain© rD   s    r(   Ú_chain_typezLLMCheckerChain._chain_type¨   s   € à"r*   c                ó4   — t        |||||«      } | dd|i|¤ŽS )Nr0   rT   )r)   )r@   r   r    r!   r"   r#   Úkwargsr0   s           r(   Úfrom_llmzLLMCheckerChain.from_llm¬   s?   € ô 7ØØ*Ø&Ø'Ø%óð 	-ñ ñ 
Ø1Uð
àñ
ð 	
r*   )rA   ÚdictÚreturnr   )rZ   z	list[str])N)rM   zdict[str, Any]rN   z$Optional[CallbackManagerForChainRun]rZ   zdict[str, str])rZ   r2   )r   r   r    r	   r!   r	   r"   r	   r#   r	   rW   r   rZ   r/   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r    r   r!   r   r"   r   r#   r3   r   r
   Úmodel_configr   ÚclassmethodrB   ÚpropertyrF   rH   rQ   rU   rX   rT   r*   r(   r/   r/   B   sd  … ñ	ð +:Ó9à'+€CÐ	$Ó+Ø*Ø1KÐ ÓKØØ-CÐ˜NÓCØØ.EÐ˜^ÓEØØ,AÐ˜>ÓAØDØ€IˆsÓØ€J�ÓáØ $Øô€Lñ
 ˜(Ô#Øòó ó $ðð: ò ó ð ð ò!ó ð!ð =Að>àð>ð :ð>ð 
ó	>ð ò#ó ð#ð ð 6PØ1GØ2IØ0Eð
àð
ð %3ð
ð !/ð	
ð
 "0ð
ð  .ð
ð ð
ð 
ò
ó ñ
r*   r/   )r   r   r    r	   r!   r	   r"   r	   r#   r	   rZ   r   )r^   Ú
__future__r   r=   Útypingr   r   Úlangchain_core._apir   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.promptsr	   Úpydanticr
   r   Úlangchain.chains.baser   Úlangchain.chains.llmr   Ú#langchain.chains.llm_checker.promptr   r   r   r   Úlangchain.chains.sequentialr   r)   r/   rT   r*   r(   Ú<module>rn      s¤   ðÙ :å "ã ß  å *Ý ?Ý <Ý 1ß 0å 'Ý )÷ó õ 8ð&Ø	ð&à .ð&ð +ð&ð ,ð	&ð
 *ð&ð ó&ñR Ø
ð	Uð ôôw
�eó w
óñw
r*   