§
    šŠtj  ã                  ó–   — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZmZ ddlmZ d	d
iZ G d„ de¦  «        ZdS )z<Chain that hits a URL and then uses an LLM to parse results.é    )Úannotations)ÚAnyÚDictÚListÚOptional)ÚLLMChain)ÚChain)ÚCallbackManagerForChainRun)Ú
ConfigDictÚFieldÚmodel_validator)ÚTextRequestsWrapperz
User-AgentzrMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36c                  ó&  — e Zd ZU dZde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&d„¦   «         Zed&d„¦   «         Z ed¬¦  «        ed'd„¦   «         ¦   «         Z	 d(d)d$„Zed*d%„¦   «         ZdS )+ÚLLMRequestsChainab  Chain that requests a URL and then uses an LLM to parse results.

    **Security Note**: This chain can make GET requests to arbitrary URLs,
        including internal URLs.

        Control access to who can run this chain and what network access
        this chain has.

        See https://python.langchain.com/docs/security for more information.
    r   Ú	llm_chainc                 ó,   — t          t          ¬¦  «        S )N)Úheaders)r   ÚDEFAULT_HEADERS© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chains/llm_requests.pyú<lambda>zLLMRequestsChain.<lambda>!   s   € Õ 3½OÐ LÑ LÔ L€ r   T)Údefault_factoryÚexcluder   Úrequests_wrapperi@  ÚintÚtext_lengthÚrequests_resultÚstrÚrequests_keyÚurlÚ	input_keyÚoutputÚ
output_keyÚforbid)Úarbitrary_types_allowedÚextraÚreturnú	List[str]c                ó   — | j         gS )z)Will be whatever keys the prompt expects.©r"   ©Úselfs    r   Ú
input_keyszLLMRequestsChain.input_keys.   s   € ð ”ÐÐr   c                ó   — | j         gS )zWill always return text key.)r$   r,   s    r   Úoutput_keyszLLMRequestsChain.output_keys3   s   € ð ”Ð Ð r   Úbefore)ÚmodeÚvaluesr   r   c                óP   — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w|S )z?Validate that api key and python package exists in environment.r   ©ÚBeautifulSoupzNCould not import bs4 python package. Please install it with `pip install bs4`.)Úbs4r6   ÚImportError)Úclsr3   r6   s      r   Úvalidate_environmentz%LLMRequestsChain.validate_environment8   sU   € ð	Ø)Ð)Ð)Ð)Ð)Ð)Ð)øåð 	ð 	ð 	Ýð<ñô ð ð	øøøð
 ˆs   ‚	 ‰#NÚinputsúDict[str, Any]Úrun_managerú$Optional[CallbackManagerForChainRun]c                ó�  ‡ — ddl m} |pt          j        ¦   «         }ˆ fd„|                     ¦   «         D ¦   «         }|‰ j                 }‰ j                             |¦  «        } ||d¦  «        }|                     ¦   «         d ‰ j	        …         |‰ j
        <    ‰ j        j        dd|                     ¦   «         i|¤Ž}	‰ j        |	iS )Nr   r5   c                ó2   •— i | ]\  }}|‰j         k    ¯||“ŒS r   r+   )Ú.0ÚkÚvr-   s      €r   ú
<dictcomp>z*LLMRequestsChain._call.<locals>.<dictcomp>O   s+   ø€ ÐMÐMÐM™t˜q !¸¸d¼nÒ9LÐ9L�a˜Ð9LÐ9LÐ9Lr   zhtml.parserÚ	callbacksr   )r7   r6   r
   Úget_noop_managerÚitemsr"   r   ÚgetÚget_textr   r    r   ÚpredictÚ	get_childr$   )
r-   r;   r=   r6   Ú_run_managerÚ
other_keysr!   ÚresÚsoupÚresults
   `         r   Ú_callzLLMRequestsChain._callF   sè   ø€ ð
 	&Ð%Ð%Ð%Ð%Ð%à"ÐSÕ&@Ô&QÑ&SÔ&SˆàMÐMÐMÐM v§|¢|¡~¤~ÐMÑMÔMˆ
Ø�T”^Ô$ˆØÔ#×'Ò'¨Ñ,Ô,ˆàˆ}˜S -Ñ0Ô0ˆØ(,¯ª©¬Ð8J¸$Ô:JÐ8JÔ(Kˆ
�4Ô$Ñ%Ø'�”Ô'ð 
ð 
Ø"×,Ò,Ñ.Ô.ð
Ø2<ð
ð 
ˆð ” Ð(Ð(r   c                ó   — dS )NÚllm_requests_chainr   r,   s    r   Ú_chain_typezLLMRequestsChain._chain_typeZ   s   € à#Ð#r   )r(   r)   )r3   r   r(   r   )N)r;   r<   r=   r>   r(   r<   )r(   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r    r"   r$   r   Úmodel_configÚpropertyr.   r0   r   Úclassmethodr:   rQ   rT   r   r   r   r   r      s{  € € € € € € ð	ð 	ð ÐÐÑØ,1¨EØLÐLØð-ñ -ô -Ðð ð ð ñ ð €KÐÐÐÑØ)€LÐ)Ð)Ð)Ñ)Ø€IÐÐÐÑØ€JÐÐÐÑà�:Ø $Øðñ ô €Lð
 ð ð  ð  ñ „Xð ð ð!ð !ð !ñ „Xð!ð €_˜(Ð#Ñ#Ô#Øð
ð 
ð 
ñ „[ñ $Ô#ð
ð =Að)ð )ð )ð )ð )ð( ð$ð $ð $ñ „Xð$ð $ð $r   r   N)rX   Ú
__future__r   Útypingr   r   r   r   Úlangchain_classic.chainsr   Úlangchain_classic.chains.baser	   Úlangchain_core.callbacksr
   Úpydanticr   r   r   Ú&langchain_community.utilities.requestsr   r   r   r   r   r   ú<module>rd      s÷   ðØ BÐ Bà "Ð "Ð "Ð "Ð "Ð "à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à FÐ FÐ FÐ FÐ FÐ Fð ð  Gð€ð
I$ð I$ð I$ð I$ð I$�uñ I$ô I$ð I$ð I$ð I$r   