§
    ™Štjs  ã                  óÒ   — 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 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dS )z Implement an LLM driven browser.é    )ÚannotationsN)ÚAny)Ú
deprecated)ÚCallbackManagerForChainRun)ÚBaseLanguageModel)ÚStrOutputParser)ÚRunnable)Ú
ConfigDictÚmodel_validator)ÚChain)ÚPROMPTz0.2.13z2.0.0z-langchain_community.chains.natbot.NatBotChain)ÚsinceÚremovalÚalternative_importc                  óT  — 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d0d(„¦   «         ZdS )1Ú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://docs.langchain.com/oss/python/security-policy for more information.

    Example:
        ```python
        from langchain_classic.chains import NatBotChain

        natbot = NatBotChain.from_default("Buy me a new hat.")
        ```
    r	   Ú	llm_chainÚstrÚ	objectiveNzBaseLanguageModel | NoneÚllmÚurlÚinput_url_keyÚbrowser_contentÚinput_browser_content_keyÚ Úprevious_commandÚcommandÚ
output_keyTÚforbid)Úarbitrary_types_allowedÚextraÚbefore)ÚmodeÚvaluesÚdictÚreturnr   c                ó–   — d|v rDt          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   )Úclsr$   s     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/chains/natbot/base.pyÚ_raise_deprecationzNatBotChain._raise_deprecation?   si   € ð �Fˆ?ˆ?ÝŒMð ð ð	ñ ô ð ð  &Ð(Ð(¨V°E¬]Ð-FÝ&,¨v°e¬}Ñ&<½Ñ?PÔ?PÑ&P��{Ñ#Øˆó    Úkwargsc                ó$   — d}t          |¦  «        ‚)zLoad with default LLMChain.z¬This method is no longer implemented. Please use from_llm.model = OpenAI(temperature=0.5, best_of=10, n=3, max_tokens=50)For example, NatBotChain.from_llm(model, objective))ÚNotImplementedError)r,   r   r0   Úmsgs       r-   Úfrom_defaultzNatBotChain.from_defaultM   s   € ðBð 	õ
 " #Ñ&Ô&Ð&r/   r   c                óJ   — t           |z  t          ¦   «         z  } | d||dœ|¤ŽS )zLoad from LLM.)r   r   © )r   r   )r,   r   r   r0   r   s        r-   Úfrom_llmzNatBotChain.from_llmW   s5   € õ ˜S‘L¥?Ñ#4Ô#4Ñ4ˆ	ØˆsÐF˜Y°)ÐFÐF¸vÐFÐFÐFr/   ú	list[str]c                ó   — | j         | j        gS )zExpect url and browser content.)r   r   ©Úselfs    r-   Ú
input_keyszNatBotChain.input_keysb   s   € ð Ô" DÔ$BÐCÐCr/   c                ó   — | j         gS )zReturn command.)r   r:   s    r-   Úoutput_keyszNatBotChain.output_keysg   s   € ð ”Ð Ð r/   Úinputsúdict[str, str]Úrun_managerú!CallbackManagerForChainRun | Nonec                óF  — |pt          j        ¦   «         }|| j                 }|| j                 }| j                             | j        |d d…         | j        |d d…         dœd|                     ¦   «         i¬¦  «        }| 	                    ¦   «         }|| _        | j
        |iS )Néd   i”  )r   r   r   r   Ú	callbacks)Úconfig)r   Úget_noop_managerr   r   r   Úinvoker   r   Ú	get_childÚstripr   )r;   r?   rA   Ú_run_managerr   r   Úllm_cmds          r-   Ú_callzNatBotChain._calll   s´   € ð
 #ÐSÕ&@Ô&QÑ&SÔ&SˆØ�TÔ'Ô(ˆØ  Ô!?Ô@ˆØ”.×'Ò'à!œ^Ø˜4˜C˜4”yØ$(Ô$9Ø#2°5°D°5Ô#9ð	ð ð   ×!7Ò!7Ñ!9Ô!9Ð:ð (ñ 
ô 
ˆð —-’-‘/”/ˆØ 'ˆÔØ” Ð)Ð)r/   c                óN   — | 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:
            ```python
            browser_content = "...."
            llm_command = natbot.run("www.google.com", browser_content)
            ```
        )r   r   r   )r;   r   r   Ú_inputss       r-   ÚexecutezNatBotChain.execute�   s2   € ð" Ô ØÔ*¨Oð
ˆð ˆt�G‰}Œ}˜Tœ_Ô-Ð-r/   c                ó   — dS )NÚnat_bot_chainr6   r:   s    r-   Ú_chain_typezNatBotChain._chain_type—   s   € àˆr/   )r$   r%   r&   r   )r   r   r0   r   r&   r   )r   r   r   r   r0   r   r&   r   )r&   r8   )N)r?   r@   rA   rB   r&   r@   )r   r   r   r   r&   r   )r&   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r   r
   Úmodel_configr   Úclassmethodr.   r4   r7   Úpropertyr<   r>   rM   rP   rS   r6   r/   r-   r   r      sÂ  € € € € € € ðð ð. ÐÐÑØ€N€N�NØ:Ø$(€CÐ(Ð(Ð(Ñ(Ø*Ø€MÐÐÐÑØ%6ÐÐ6Ð6Ð6Ñ6ØÐÐÐÐÑØ€JÐÐÐÑà�:Ø $Øðñ ô €Lð
 €_˜(Ð#Ñ#Ô#Øð
ð 
ð 
ñ „[ñ $Ô#ð
ð ð'ð 'ð 'ñ „[ð'ð ðGð Gð Gñ „[ðGð ðDð Dð Dñ „XðDð ð!ð !ð !ñ „Xð!ð :>ð*ð *ð *ð *ð *ð*.ð .ð .ð .ð, ðð ð ñ „Xðð ð r/   r   )rW   Ú
__future__r   r*   Útypingr   Úlangchain_core._apir   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.output_parsersr   Úlangchain_core.runnablesr	   Úpydanticr
   r   Úlangchain_classic.chains.baser   Ú&langchain_classic.chains.natbot.promptr   r   r6   r/   r-   ú<module>rf      s5  ðØ &Ð &à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø <Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ð €Ø
ØØFðñ ô ð
Að Að Að Að A�%ñ Aô Añô ð
Að Að Ar/   