Ë
    ´Œjæ  ã                  óÂ   — 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 dd
lmZmZ ddlmZ ddlmZ  eddd¬«       G d„ de«      «       Zy)z Implement an LLM driven browser.é    )ÚannotationsN)ÚAnyÚOptional)Ú
deprecated)ÚCallbackManagerForChainRun)ÚBaseLanguageModel)ÚStrOutputParser)ÚRunnable)Ú
ConfigDictÚmodel_validator)ÚChain)ÚPROMPTz0.2.13z÷Importing NatBotChain from langchain is deprecated and will be removed in langchain 1.0. Please import from langchain_community instead: from langchain_community.chains.natbot import NatBotChain. You may need to pip install -U langchain-community.z1.0)ÚsinceÚmessageÚremovalc                  ó6  — e Zd ZU dZded<   ded<   	 dZded<   	 d	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ed!d„«       Zed!d„«       Z	 d"	 	 	 	 	 d#d„Zd$d„Zed%d„«       Zy)&ÚNatBotChaina°  Implement an LLM driven browser.

    **Security Note**: This toolkit provides code to control a web-browser.

        The web-browser can be used to navigate to:

        - Any URL (including any internal network URLs)
        - And local files

        Exercise care if exposing this chain to end-users. Control who is able to
        access and use this chain, and isolate the network access of the server
        that hosts this chain.

        See https://python.langchain.com/docs/security for more information.

    Example:
        .. code-block:: python

            from langchain.chains import NatBotChain
            natbot = NatBotChain.from_default("Buy me a new hat.")
    r
   Ú	llm_chainÚstrÚ	objectiveNzOptional[BaseLanguageModel]ÚllmÚurlÚinput_url_keyÚbrowser_contentÚinput_browser_content_keyÚ Úprevious_commandÚcommandÚ
output_keyTÚforbid)Úarbitrary_types_allowedÚextraÚbefore)Úmodec                ó‚   — d|v r:t        j                  dd¬«       d|vr|d   �t        |d   z  t        «       z  |d<   |S )Nr   z�Directly instantiating an NatBotChain with an llm is deprecated. Please instantiate with llm_chain argument or using the from_llm class method.é   )Ú
stacklevelr   )ÚwarningsÚwarnr   r	   )ÚclsÚvaluess     úf/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/natbot/base.pyÚraise_deprecationzNatBotChain.raise_deprecationC   sT   € ð �F‰?Ü�M‰Mð ð õ	ð  &Ñ(¨V°E©]Ð-FÜ&,¨v°e©}Ñ&<¼Ó?PÑ&P��{Ñ#Øˆó    c                ó   — d}t        |«      ‚)zLoad with default LLMChain.z¨This method is no longer implemented. Please use from_llm.llm = OpenAI(temperature=0.5, best_of=10, n=3, max_tokens=50)For example, NatBotChain.from_llm(llm, objective))ÚNotImplementedError)r*   r   ÚkwargsÚmsgs       r,   Úfrom_defaultzNatBotChain.from_defaultQ   s   € ð@ð 	ô
 " #Ó&Ð&r.   c                ó@   — t         |z  t        «       z  } | d||dœ|¤ŽS )zLoad from LLM.)r   r   © )r   r	   )r*   r   r   r1   r   s        r,   Úfrom_llmzNatBotChain.from_llm[   s*   € ô ˜S‘L¤?Ó#4Ñ4ˆ	ÙÐF˜Y°)ÑF¸vÑFÐFr.   c                ó2   — | j                   | j                  gS )z@Expect url and browser content.

        :meta private:
        )r   r   ©Úselfs    r,   Ú
input_keyszNatBotChain.input_keysf   s   € ð ×"Ñ" D×$BÑ$BÐCÐCr.   c                ó   — | j                   gS )z0Return command.

        :meta private:
        )r   r8   s    r,   Úoutput_keyszNatBotChain.output_keysn   s   € ð —‘Ð Ð r.   c                óP  — |xs t        j                  «       }|| j                     }|| j                     }| j                  j                  | j                  |d d | j                  |d d dœd|j                  «       i¬«      }|j                  «       }|| _        | j                  |iS )Néd   i”  )r   r   r   r   Ú	callbacks)Úconfig)r   Úget_noop_managerr   r   r   Úinvoker   r   Ú	get_childÚstripr   )r9   ÚinputsÚrun_managerÚ_run_managerr   r   Úllm_cmds          r,   Ú_callzNatBotChain._callv   s°   € ð
 #ÒSÔ&@×&QÑ&QÓ&SˆØ�T×'Ñ'Ñ(ˆØ  ×!?Ñ!?Ñ@ˆØ—.‘.×'Ñ'à!Ÿ^™^Ø˜4˜C�yØ$(×$9Ñ$9Ø#2°5°DÐ#9ñ	ð   ×!7Ñ!7Ó!9Ð:ð (ó 
ˆð —-‘-“/ˆØ 'ˆÔØ—‘ Ð)Ð)r.   c                ó`   — | j                   || j                  |i} | |«      | j                     S )a¬  Figure out next browser command to run.

        Args:
            url: URL of the site currently on.
            browser_content: Content of the page as currently displayed by the browser.

        Returns:
            Next browser command to run.

        Example:
            .. code-block:: python

                browser_content = "...."
                llm_command = natbot.run("www.google.com", browser_content)
        )r   r   r   )r9   r   r   Ú_inputss       r,   ÚexecutezNatBotChain.execute‹   s6   € ð" ×Ñ Ø×*Ñ*¨Oð
ˆñ �G‹}˜TŸ_™_Ñ-Ð-r.   c                 ó   — y)NÚnat_bot_chainr5   r8   s    r,   Ú_chain_typezNatBotChain._chain_type¡   s   € àr.   )r+   ÚdictÚreturnr   )r   r   r1   r   rQ   r   )r   r   r   r   r1   r   rQ   r   )rQ   z	list[str])N)rE   údict[str, str]rF   z$Optional[CallbackManagerForChainRun]rQ   rR   )r   r   r   r   rQ   r   )rQ   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r   Úmodel_configr   Úclassmethodr-   r3   r6   Úpropertyr:   r<   rI   rL   rO   r5   r.   r,   r   r      s>  … ñð, ÓØƒNØ:Ø'+€CÐ	$Ó+Ø*Ø€M�3ÓØ%6Ð˜sÓ6ØÐ�cÓØ€J�ÓáØ $Øô€Lñ
 ˜(Ô#Øò
ó ó $ð
ð ò'ó ð'ð ðGàðGð ðGð ð	Gð
 
òGó ðGð òDó ðDð ò!ó ð!ð =Að*àð*ð :ð*ð 
ó	*ó*.ð, òó ñr.   r   )rV   Ú
__future__r   r(   Útypingr   r   Úlangchain_core._apir   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.output_parsersr	   Úlangchain_core.runnablesr
   Úpydanticr   r   Úlangchain.chains.baser   Úlangchain.chains.natbot.promptr   r   r5   r.   r,   Ú<module>re      sY   ðÙ &å "ã ß  å *Ý ?Ý <Ý 9Ý -ß 0å 'Ý 1ñ Ø
ð	>ð
 ô	ôF�%ó Fó	ñFr.   