Ë
    µŒjb  ã                  óŽ   — 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y)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y)"Ú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© ó    úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chains/llm_requests.pyÚ<lambda>zLLMRequestsChain.<lambda>!   s
   € Ô 3¼OÕ Lr   T)Údefault_factoryÚexcluder   Úrequests_wrapperi@  ÚintÚtext_lengthÚrequests_resultÚstrÚrequests_keyÚurlÚ	input_keyÚoutputÚ
output_keyÚforbid)Úarbitrary_types_allowedÚextrac                ó   — | j                   gS )zJWill be whatever keys the prompt expects.

        :meta private:
        )r"   ©Úselfs    r   Ú
input_keyszLLMRequestsChain.input_keys.   s   € ð —‘ÐÐr   c                ó   — | j                   gS )z=Will always return text key.

        :meta private:
        )r$   r)   s    r   Úoutput_keyszLLMRequestsChain.output_keys6   s   € ð —‘Ð Ð r   Úbefore)Úmodec                óD   — 	 ddl m} |S # t        $ r t        d«      ‚w xY w)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`.)Úbs4r2   ÚImportError)ÚclsÚvaluesr2   s      r   Úvalidate_environmentz%LLMRequestsChain.validate_environment>   s4   € ð	Ý)ð ˆøô ò 	Üð<óð ð	ús   ‚
 ŠNc                óÞ  — ddl m} |xs t        j                  «       }|j	                  «       D ��ci c]  \  }}|| j
                  k7  sŒ||“Œ }}}|| j
                     }| j                  j                  |«      }	 ||	d«      }
|
j                  «       d | j                   || j                  <    | j                  j                  dd|j                  «       i|¤Ž}| j                  |iS c c}}w )Nr   r1   zhtml.parserÚ	callbacksr   )r3   r2   r
   Úget_noop_managerÚitemsr"   r   ÚgetÚget_textr   r    r   ÚpredictÚ	get_childr$   )r*   ÚinputsÚrun_managerr2   Ú_run_managerÚkÚvÚ
other_keysr!   ÚresÚsoupÚresults               r   Ú_callzLLMRequestsChain._callL   sâ   € õ
 	&à"ÒSÔ&@×&QÑ&QÓ&Sˆà'-§|¡|¤~ÔM¡~™t˜q !¸¸d¿n¹nÓ9L�a˜‘d ~ˆ
ÑMØ�T—^‘^Ñ$ˆØ×#Ñ#×'Ñ'¨Ó,ˆá˜S -Ó0ˆØ(,¯©«Ð8J¸$×:JÑ:JÐ(Kˆ
�4×$Ñ$Ñ%Ø'�—‘×'Ñ'ñ 
Ø"×,Ñ,Ó.ð
Ø2<ñ
ˆð —‘ Ð(Ð(ùó Ns   ²C)Á
C)c                 ó   — y)NÚllm_requests_chainr   r)   s    r   Ú_chain_typezLLMRequestsChain._chain_type`   s   € à#r   )Úreturnz	List[str])r6   r   rM   r   )N)r@   úDict[str, Any]rA   z$Optional[CallbackManagerForChainRun]rM   rN   )rM   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r    r"   r$   r   Úmodel_configÚpropertyr+   r-   r   Úclassmethodr7   rI   rL   r   r   r   r   r      sæ   … ñ	ð ÓÙ,1ÙLØô-ÐÐ)ó ð €K�ÓØ)€L�#Ó)Ø€IˆsÓØ€J�ÓáØ $Øô€Lð
 ò ó ð ð ò!ó ð!ñ ˜(Ô#Øò
ó ó $ð
ð =Að)àð)ð :ð)ð 
ó	)ð( ò$ó ñ$r   r   N)rR   Ú
__future__r   Útypingr   r   r   r   Úlangchain.chainsr   Úlangchain.chains.baser	   Úlangchain_core.callbacksr
   Úpydanticr   r   r   Ú&langchain_community.utilities.requestsr   r   r   r   r   r   Ú<module>r^      sC   ðÙ Bå "ç ,Ó ,å %Ý 'Ý ?ß 7Ñ 7å Fð ð  Gð€ô
O$�uõ O$r   