§
    ™ŠtjŠ  ã                  óô   — d Z ddlmZ ddl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 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d¬¦  «         G d„ de¦  «        ¦   «         ZdS ) z4Chain for question-answering with self-verification.é    )ÚannotationsN)ÚAny)Ú
deprecated)ÚCallbackManagerForChainRun)ÚBaseLanguageModel)ÚPromptTemplate)Ú
ConfigDictÚmodel_validator)ÚChain)ÚLLMChain)ÚCHECK_ASSERTIONS_PROMPTÚCREATE_DRAFT_ANSWER_PROMPTÚLIST_ASSERTIONS_PROMPTÚREVISED_ANSWER_PROMPT)ÚSequentialChainÚllmr   Úcreate_draft_answer_promptr   Úlist_assertions_promptÚcheck_assertions_promptÚrevised_answer_promptÚreturnr   c                óÈ   — t          | |d¬¦  «        }t          | |d¬¦  «        }t          | |d¬¦  «        }t          | |d¬¦  «        }||||g}	t          |	dgdgd¬¦  «        S )	NÚ	statement)r   ÚpromptÚ
output_keyÚ
assertionsÚchecked_assertionsÚrevised_statementÚquestionT)ÚchainsÚinput_variablesÚoutput_variablesÚverbose)r   r   )
r   r   r   r   r   Úcreate_draft_answer_chainÚlist_assertions_chainÚcheck_assertions_chainÚrevised_answer_chainr    s
             úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/chains/llm_checker/base.pyÚ*_load_question_to_checked_assertions_chainr)      sÁ   € õ !)ØØ)Øð!ñ !ô !Ðõ
 %ØØ%Øðñ ô Ðõ
 &ØØ&Ø'ðñ ô Ðõ
 $ØØ$Ø&ðñ ô Ðð 	"ØØØð	€Fõ ØØ#˜Ø-Ð.Øð	ñ ô ð ó    z0.2.13z2.0.0zlangchain.agents.create_agentz–Build self-reflection or corrective loops with `create_agent` (e.g. via custom middleware). See https://docs.langchain.com/oss/python/langchain/agents)ÚsinceÚremovalÚalternativeÚaddendumc                  óV  — 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dS ).ÚLLMCheckerChaina/  Chain for question-answering with self-verification.

    Example:
        ```python
        from langchain_openai import OpenAI
        from langchain_classic.chains import LLMCheckerChain

        model = OpenAI(temperature=0.7)
        checker_chain = LLMCheckerChain.from_llm(model)
        ```
    r   Ú$question_to_checked_assertions_chainNzBaseLanguageModel | Noner   r   r   r   r   r   ÚqueryÚstrÚ	input_keyÚresultr   TÚforbid)Úarbitrary_types_allowedÚextraÚbefore)ÚmodeÚvaluesÚdictr   r   c           
     óV  — d|v r¤t          j        dd¬¦  «         d|vrŠ|d         �‚t          |d         |                     dt          ¦  «        |                     dt
          ¦  «        |                     dt          ¦  «        |                     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.é   )Ú
stacklevelr1   r   r   r   r   )ÚwarningsÚwarnr)   Úgetr   r   r   r   )Úclsr;   r1   s      r(   Ú_raise_deprecationz"LLMCheckerChain._raise_deprecationm   sË   € ð �Fˆ?ˆ?ÝŒMð6ð ð	ñ ô ð ð 7¸fÐDÐDØ˜5”MÐ-õ ?Ø˜uœØŸ
š
Ø8Ý6ñô ð Ÿ
š
Ð#;Õ=SÑTÔTØŸ
š
Ð#<Õ>UÑVÔVØŸ
š
Ð#:Õ<QÑRÔRñ	ô 	ð 5ð 9ð Ð=Ñ>ð ˆr*   ú	list[str]c                ó   — | j         gS )zReturn the singular input key.)r4   ©Úselfs    r(   Ú
input_keyszLLMCheckerChain.input_keysŒ   s   € ð ”ÐÐr*   c                ó   — | j         gS )zReturn the singular output key.)r   rG   s    r(   Úoutput_keyszLLMCheckerChain.output_keys‘   s   € ð ”Ð Ð r*   Úinputsúdict[str, Any]Úrun_managerú!CallbackManagerForChainRun | Noneúdict[str, str]c                óº   — |pt          j        ¦   «         }|| j                 }|                      d|i|                     ¦   «         ¬¦  «        }| j        |d         iS )Nr   )Ú	callbacksr   )r   Úget_noop_managerr4   r1   Ú	get_childr   )rH   rL   rN   Ú_run_managerr   Úoutputs         r(   Ú_callzLLMCheckerChain._call–   sj   € ð
 #ÐSÕ&@Ô&QÑ&SÔ&SˆØ˜$œ.Ô)ˆà×:Ò:Ø˜Ð"Ø"×,Ò,Ñ.Ô.ð ;ñ 
ô 
ˆð ” Ð(;Ô!<Ð=Ð=r*   c                ó   — dS )NÚllm_checker_chain© rG   s    r(   Ú_chain_typezLLMCheckerChain._chain_type¤   s   € à"Ð"r*   r   Úkwargsc                ó<   — t          |||||¦  «        } | dd|i|¤ŽS )aš  Create an LLMCheckerChain from a language model.

        Args:
            llm: a language model
            create_draft_answer_prompt: prompt to create a draft answer
            list_assertions_prompt: prompt to list assertions
            check_assertions_prompt: prompt to check assertions
            revised_answer_prompt: prompt to revise the answer
            **kwargs: additional arguments
        r1   rZ   )r)   )rC   r   r   r   r   r   r\   r1   s           r(   Úfrom_llmzLLMCheckerChain.from_llm¨   sP   € õ* 7ØØ*Ø&Ø'Ø%ñô ð 	-ð ˆsð 
ð 
Ø1Uð
àð
ð 
ð 	
r*   )r;   r<   r   r   )r   rE   )N)rL   rM   rN   rO   r   rP   )r   r3   )r   r   r   r   r   r   r   r   r   r   r\   r   r   r0   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r   r   r   r   r4   r   r	   Úmodel_configr
   ÚclassmethodrD   ÚpropertyrI   rK   rW   r[   r^   rZ   r*   r(   r0   r0   B   s¾  € € € € € € ð
ð 
ð :Ð9Ð9Ñ9à$(€CÐ(Ð(Ð(Ñ(Ø*Ø1KÐÐKÐKÐKÑKØØ-CÐÐCÐCÐCÑCØØ.EÐÐEÐEÐEÑEØØ,AÐÐAÐAÐAÑAØDØ€IÐÐÐÑØ€JÐÐÐÑà�:Ø $Øðñ ô €Lð
 €_˜(Ð#Ñ#Ô#Øðð ð ñ „[ñ $Ô#ðð: ð ð  ð  ñ „Xð ð ð!ð !ð !ñ „Xð!ð :>ð>ð >ð >ð >ð >ð ð#ð #ð #ñ „Xð#ð ð 6PØ1GØ2IØ0Eð
ð 
ð 
ð 
ñ „[ð
ð 
ð 
r*   r0   )r   r   r   r   r   r   r   r   r   r   r   r   )rb   Ú
__future__r   r@   Útypingr   Úlangchain_core._apir   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.promptsr   Úpydanticr	   r
   Úlangchain_classic.chains.baser   Úlangchain_classic.chains.llmr   Ú+langchain_classic.chains.llm_checker.promptr   r   r   r   Ú#langchain_classic.chains.sequentialr   r)   r0   rZ   r*   r(   ú<module>rr      s�  ðØ :Ð :à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø <Ð <Ð <Ð <Ð <Ð <Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?ð&ð &ð &ð &ðR €Ø
ØØ/ð	Að	ñ 	ô 	ð|
ð |
ð |
ð |
ð |
�eñ |
ô |
ñ	ô 	ð|
ð |
ð |
r*   