§
    ¦ìNg  ã                  ó¦   — 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 d dlmZ d dlmZ d d	lmZ d d
lmZ  G d„ de¦  «        ZdS )é    )Úannotations)ÚAnyÚListÚOptionalÚSequence)ÚBaseLanguageModel)ÚBaseTool)ÚBaseToolkit)ÚField)ÚNLATool)ÚOpenAPISpec)ÚAIPlugin)ÚRequestsc                  óÔ   — e Zd ZU dZ ed¦  «        Zded<   	 dd„Ze	 	 d d!d„¦   «         Z	e
	 	 d d"d„¦   «         Ze
	 	 d d#d„¦   «         Ze
	 	 d d$d„¦   «         Ze
	 	 d d%d„¦   «         ZdS )&Ú
NLAToolkita·  Natural Language API Toolkit.

    *Security Note*: This toolkit creates tools that enable making calls
        to an Open API compliant API.

        The tools created by this toolkit may be able to make GET, POST,
        PATCH, PUT, DELETE requests to any of the exposed endpoints on
        the API.

        Control access to who can use this toolkit.

        See https://python.langchain.com/docs/security for more information.
    .zSequence[NLATool]Ú	nla_toolsÚreturnúList[BaseTool]c                ó*   — t          | j        ¦  «        S )ú)Get the tools for all the API operations.)Úlistr   )Úselfs    új/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/agent_toolkits/nla/toolkit.pyÚ	get_toolszNLAToolkit.get_tools"   s   € åD”NÑ#Ô#Ð#ó    NFÚllmr   Úspecr   ÚrequestsúOptional[Requests]ÚverboseÚboolÚkwargsr   úList[NLATool]c                óº   — |j         sg S g }|j         D ]G}|                     |¦  «        D ]/}t          j        d| |||||dœ|¤Ž}|                     |¦  «         Œ0ŒH|S )r   )r   ÚpathÚmethodr   r   r    © )ÚpathsÚget_methods_for_pathr   Úfrom_llm_and_methodÚappend)	r   r   r   r    r"   Úhttp_operation_toolsr%   r&   Úendpoint_tools	            r   Ú_get_http_operation_toolsz$NLAToolkit._get_http_operation_tools&   s¥   € ð Œzð 	ØˆIØ!ÐØ”Jð 	;ð 	;ˆDØ×3Ò3°DÑ9Ô9ð 
;ð 
;Ý 'Ô ;ð !ØØØ!ØØ%Ø#ð!ð !ð ð!ð !ð %×+Ò+¨MÑ:Ô:Ð:Ð:ð
;ð $Ð#r   c                ó>   —  | j         d||||dœ|¤Ž} | |¬¦  «        S )aƒ  Instantiate the toolkit by creating tools for each operation.

        Args:
            llm: The language model to use.
            spec: The OpenAPI spec.
            requests: Optional requests object. Default is None.
            verbose: Whether to print verbose output. Default is False.
            kwargs: Additional arguments.

        Returns:
            The toolkit.
        ©r   r   r   r    )r   r'   )r.   )Úclsr   r   r   r    r"   r,   s          r   Úfrom_llm_and_speczNLAToolkit.from_llm_and_spec@   sJ   € ð*  =˜sÔ<ð  
Ø˜$¨¸7ð 
ð  
ØFLð 
ð  
Ðð ˆsÐ1Ð2Ñ2Ô2Ð2r   Úopen_api_urlÚstrc                óN   — t          j        |¦  «        } | j        d||||dœ|¤ŽS )aŠ  Instantiate the toolkit from an OpenAPI Spec URL.

        Args:
            llm: The language model to use.
            open_api_url: The URL of the OpenAPI spec.
            requests: Optional requests object. Default is None.
            verbose: Whether to print verbose output. Default is False.
            kwargs: Additional arguments.

        Returns:
            The toolkit.
        r0   r'   )r   Úfrom_urlr2   )r1   r   r3   r   r    r"   r   s          r   Úfrom_llm_and_urlzNLAToolkit.from_llm_and_urlZ   sF   € õ, Ô# LÑ1Ô1ˆØ$ˆsÔ$ð 
Ø˜$¨¸7ð
ð 
ØFLð
ð 
ð 	
r   Ú	ai_pluginr   c                ób   — t          j        |j        j        ¦  «        } | j        d||||dœ|¤ŽS )ú0Instantiate the toolkit from an OpenAPI Spec URLr0   r'   )r   r6   ÚapiÚurlr2   )r1   r   r8   r   r    r"   r   s          r   Úfrom_llm_and_ai_pluginz!NLAToolkit.from_llm_and_ai_pluginu   sP   € õ Ô# I¤MÔ$5Ñ6Ô6ˆà$ˆsÔ$ð 
ØØØØð	
ð 
ð
 ð
ð 
ð 	
r   Úai_plugin_urlc                óN   — t          j        |¦  «        } | j        d||||dœ|¤ŽS )r:   )r   r8   r   r    r'   )r   r6   r=   )r1   r   r>   r   r    r"   Úplugins          r   Úfrom_llm_and_ai_plugin_urlz%NLAToolkit.from_llm_and_ai_plugin_url‰   sF   € õ Ô" =Ñ1Ô1ˆØ)ˆsÔ)ð 
Ø˜v°À'ð
ð 
ØMSð
ð 
ð 	
r   )r   r   )NF)r   r   r   r   r   r   r    r!   r"   r   r   r#   )r   r   r   r   r   r   r    r!   r"   r   r   r   )r   r   r3   r4   r   r   r    r!   r"   r   r   r   )r   r   r8   r   r   r   r    r!   r"   r   r   r   )r   r   r>   r4   r   r   r    r!   r"   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   Ústaticmethodr.   Úclassmethodr2   r7   r=   rA   r'   r   r   r   r      s3  € € € € € € ðð ð $) 5¨¡:¤:€IÐ-Ð-Ð-Ñ-Ø%ð$ð $ð $ð $ð ð (,Øð	$ð $ð $ð $ñ „\ð$ð2 ð
 (,Øð3ð 3ð 3ð 3ñ „[ð3ð2 ð
 (,Øð
ð 
ð 
ð 
ñ „[ð
ð4 ð
 (,Øð
ð 
ð 
ð 
ñ „[ð
ð& ð
 (,Øð
ð 
ð 
ð 
ñ „[ð
ð 
ð 
r   r   N)Ú
__future__r   Útypingr   r   r   r   Úlangchain_core.language_modelsr   Úlangchain_core.toolsr	   Úlangchain_core.tools.baser
   Úpydanticr   Ú+langchain_community.agent_toolkits.nla.toolr   Ú5langchain_community.tools.openapi.utils.openapi_utilsr   Ú langchain_community.tools.pluginr   Ú&langchain_community.utilities.requestsr   r   r'   r   r   ú<module>rS      s	  ðØ "Ð "Ð "Ð "Ð "Ð "à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à <Ð <Ð <Ð <Ð <Ð <Ø )Ð )Ð )Ð )Ð )Ð )Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø MÐ MÐ MÐ MÐ MÐ MØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðF
ð F
ð F
ð F
ð F
ñ F
ô F
ð F
ð F
ð F
r   