§
    šŠtjf@  ã                   óä  — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZ ddlZddlmZ ddlmZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 dZ5	 e
d         Z6dedefd„Z7dedeg ef         fd„Z8 G d„ de2e¦  «        Z9 G d„ de2e¦  «        Z: G d„ de2e¦  «        Z; G d„ de2e¦  «        Z< G d„ de2e¦  «        Z=de.d edefd!„Z>d"e?d#e?d$e4d ed%e@d&ee6         defd'„ZAde.d$e4d ed%e@d&ee6         defd(„ZB	 	 	 	 	 	 d2de.d$e4d ed,ee         d-ee         d.e@d/eee?ef                  d%e@d&ee6         d0edefd1„ZCdS )3zLAgent that interacts with OpenAPI APIs via a hierarchical planning approach.é    N)Úpartial)ÚAnyÚCallableÚDictÚListÚLiteralÚOptionalÚSequenceÚcast)ÚBaseCallbackManager)ÚBaseLanguageModel)ÚBasePromptTemplateÚPromptTemplate)ÚBaseToolÚTool)ÚField)ÚAPI_CONTROLLER_PROMPTÚAPI_CONTROLLER_TOOL_DESCRIPTIONÚAPI_CONTROLLER_TOOL_NAMEÚAPI_ORCHESTRATOR_PROMPTÚAPI_PLANNER_PROMPTÚAPI_PLANNER_TOOL_DESCRIPTIONÚAPI_PLANNER_TOOL_NAMEÚPARSING_DELETE_PROMPTÚPARSING_GET_PROMPTÚPARSING_PATCH_PROMPTÚPARSING_POST_PROMPTÚPARSING_PUT_PROMPTÚ REQUESTS_DELETE_TOOL_DESCRIPTIONÚREQUESTS_GET_TOOL_DESCRIPTIONÚREQUESTS_PATCH_TOOL_DESCRIPTIONÚREQUESTS_POST_TOOL_DESCRIPTIONÚREQUESTS_PUT_TOOL_DESCRIPTION)ÚReducedOpenAPISpec)ÚOpenAI)ÚBaseRequestsTool)ÚRequestsWrapperiˆ  )ÚGETÚPOSTÚPUTÚDELETEÚPATCHÚpromptÚreturnc                 ó@   — ddl m}  |t          ¦   «         | ¬¦  «        S )Nr   ©ÚLLMChain©Úllmr-   )Úlangchain_classic.chains.llmr1   r%   )r-   r1   s     úp/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/agent_toolkits/openapi/planner.pyÚ_get_default_llm_chainr6   3   s7   € Ø5Ð5Ð5Ð5Ð5Ð5àˆ8Ý‰HŒHØðñ ô ð ó    c                 ó,   — t          t          | ¦  «        S )z#Returns a default LLMChain factory.)r   r6   )r-   s    r5   Ú_get_default_llm_chain_factoryr9   <   s   € õ Õ)¨6Ñ2Ô2Ð2r7   c                   óš   — e Zd ZU dZdZeed<   	 eZeed<   	 e	Z
eed<   	  e ee¦  «        ¬¦  «        Zeed<   	 ded	efd
„Zded	efd„ZdS )ÚRequestsGetToolWithParsingzHRequests GET tool with LLM-instructed extraction of truncated responses.Úrequests_getÚnameÚdescriptionÚresponse_length©Údefault_factoryÚ	llm_chainÚtextr.   c                 ót  — ddl m} 	  ||¦  «        }n# t          j        $ r}|‚d }~ww xY w|                     d¦  «        }t          t          | j                             |d         |¬¦  «        ¦  «        }|d | j        …         }| j	         
                    ||d         ¬¦  «                             ¦   «         S )Nr   ©Úparse_json_markdownÚparamsÚurl)rG   Úoutput_instructions©ÚresponseÚinstructions)Ú%langchain_classic.output_parsers.jsonrF   ÚjsonÚJSONDecodeErrorÚgetr   ÚstrÚrequests_wrapperr?   rB   ÚpredictÚstrip)ÚselfrC   rF   ÚdataÚeÚdata_paramsrK   s          r5   Ú_runzRequestsGetToolWithParsing._runQ   sÙ   € ØMÐMÐMÐMÐMÐMð	Ø&Ð& tÑ,Ô,ˆDˆDøÝÔ#ð 	ð 	ð 	ØˆGøøøøð	øøøà—h’h˜xÑ(Ô(ˆÝÝ�Ô&×*Ò*¨4°¬;¸{Ð*ÑKÔKñ
ô 
ˆð Ð2˜dÔ2Ð2Ô3ˆØŒ~×%Ò%Ø¨DÐ1FÔ,Gð &ñ 
ô 
ç
Š%‰'Œ'ð	ó   ˆ ”*£%¥*c              ƒ   ó"   K  — t          ¦   «         ‚©N©ÚNotImplementedError©rU   rC   s     r5   Ú_arunz RequestsGetToolWithParsing._aruna   ó   è è € Ý!Ñ#Ô#Ð#r7   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   rQ   Ú__annotations__r    r>   ÚMAX_RESPONSE_LENGTHr?   Úintr   r9   r   rB   r   rY   r`   © r7   r5   r;   r;   C   sÔ   € € € € € € ØRÐRà€Dˆ#ÐÐÑØØ4€K�Ð4Ð4Ñ4ØØ.€O�SÐ.Ð.Ñ.Ø8Ø�UØ6Ð6Ð7IÑJÔJðñ ô €Iˆsð ð ñ ð 1ð˜ð  ð ð ð ð ð $ ð $¨ð $ð $ð $ð $ð $ð $r7   r;   c                   óš   — e Zd ZU dZdZeed<   	 eZeed<   	 e	Z
eed<   	  e ee¦  «        ¬¦  «        Zeed<   	 ded	efd
„Zded	efd„ZdS )ÚRequestsPostToolWithParsingzIRequests POST tool with LLM-instructed extraction of truncated responses.Úrequests_postr=   r>   r?   r@   rB   rC   r.   c                 óT  — ddl m} 	  ||¦  «        }n# t          j        $ r}|‚d }~ww xY wt	          t
          | j                             |d         |d         ¦  «        ¦  «        }|d | j        …         }| j	         
                    ||d         ¬¦  «                             ¦   «         S ©Nr   rE   rH   rV   rI   rJ   )rM   rF   rN   rO   r   rQ   rR   Úpostr?   rB   rS   rT   ©rU   rC   rF   rV   rW   rK   s         r5   rY   z RequestsPostToolWithParsing._runs   sÂ   € ØMÐMÐMÐMÐMÐMð	Ø&Ð& tÑ,Ô,ˆDˆDøÝÔ#ð 	ð 	ð 	ØˆGøøøøð	øøøå�S $Ô"7×"<Ò"<¸TÀ%¼[È$ÈvÌ,Ñ"WÔ"WÑXÔXˆØÐ2˜dÔ2Ð2Ô3ˆØŒ~×%Ò%Ø¨DÐ1FÔ,Gð &ñ 
ô 
ç
Š%‰'Œ'ð	rZ   c              ƒ   ó"   K  — t          ¦   «         ‚r\   r]   r_   s     r5   r`   z!RequestsPostToolWithParsing._arun€   ra   r7   N)rb   rc   rd   re   r=   rQ   rf   r"   r>   rg   r?   rh   r   r9   r   rB   r   rY   r`   ri   r7   r5   rk   rk   e   sÔ   € € € € € € ØSÐSà€Dˆ#ÐÐÑØØ5€K�Ð5Ð5Ñ5ØØ.€O�SÐ.Ð.Ñ.Ø8Ø�UØ6Ð6Ð7JÑKÔKðñ ô €Iˆsð ð ñ ð 1ð˜ð  ð ð ð ð ð$ ð $¨ð $ð $ð $ð $ð $ð $r7   rk   c                   óš   — e Zd ZU dZdZeed<   	 eZeed<   	 e	Z
eed<   	  e ee¦  «        ¬¦  «        Zeed<   	 ded	efd
„Zded	efd„ZdS )ÚRequestsPatchToolWithParsingzJRequests PATCH tool with LLM-instructed extraction of truncated responses.Úrequests_patchr=   r>   r?   r@   rB   rC   r.   c                 óT  — ddl m} 	  ||¦  «        }n# t          j        $ r}|‚d }~ww xY wt	          t
          | j                             |d         |d         ¦  «        ¦  «        }|d | j        …         }| j	         
                    ||d         ¬¦  «                             ¦   «         S rn   )rM   rF   rN   rO   r   rQ   rR   Úpatchr?   rB   rS   rT   rp   s         r5   rY   z!RequestsPatchToolWithParsing._run’   sÉ   € ØMÐMÐMÐMÐMÐMð	Ø&Ð& tÑ,Ô,ˆDˆDøÝÔ#ð 	ð 	ð 	ØˆGøøøøð	øøøåÝ�Ô&×,Ò,¨T°%¬[¸$¸v¼,ÑGÔGñ
ô 
ˆð Ð2˜dÔ2Ð2Ô3ˆØŒ~×%Ò%Ø¨DÐ1FÔ,Gð &ñ 
ô 
ç
Š%‰'Œ'ð	rZ   c              ƒ   ó"   K  — t          ¦   «         ‚r\   r]   r_   s     r5   r`   z"RequestsPatchToolWithParsing._arun¡   ra   r7   N)rb   rc   rd   re   r=   rQ   rf   r!   r>   rg   r?   rh   r   r9   r   rB   r   rY   r`   ri   r7   r5   rs   rs   „   sÔ   € € € € € € ØTÐTà €Dˆ#Ð Ð Ñ ØØ6€K�Ð6Ð6Ñ6ØØ.€O�SÐ.Ð.Ñ.Ø8Ø�UØ6Ð6Ð7KÑLÔLðñ ô €Iˆsð ð ñ ð 1ð˜ð  ð ð ð ð ð$ ð $¨ð $ð $ð $ð $ð $ð $r7   rs   c                   óš   — e Zd ZU dZdZeed<   	 eZeed<   	 e	Z
eed<   	  e ee¦  «        ¬¦  «        Zeed<   	 ded	efd
„Zded	efd„ZdS )ÚRequestsPutToolWithParsingzHRequests PUT tool with LLM-instructed extraction of truncated responses.Úrequests_putr=   r>   r?   r@   rB   rC   r.   c                 óT  — ddl m} 	  ||¦  «        }n# t          j        $ r}|‚d }~ww xY wt	          t
          | j                             |d         |d         ¦  «        ¦  «        }|d | j        …         }| j	         
                    ||d         ¬¦  «                             ¦   «         S rn   )rM   rF   rN   rO   r   rQ   rR   Úputr?   rB   rS   rT   rp   s         r5   rY   zRequestsPutToolWithParsing._run³   sÂ   € ØMÐMÐMÐMÐMÐMð	Ø&Ð& tÑ,Ô,ˆDˆDøÝÔ#ð 	ð 	ð 	ØˆGøøøøð	øøøå�S $Ô"7×";Ò";¸DÀ¼KÈÈfÌÑ"VÔ"VÑWÔWˆØÐ2˜dÔ2Ð2Ô3ˆØŒ~×%Ò%Ø¨DÐ1FÔ,Gð &ñ 
ô 
ç
Š%‰'Œ'ð	rZ   c              ƒ   ó"   K  — t          ¦   «         ‚r\   r]   r_   s     r5   r`   z RequestsPutToolWithParsing._arunÀ   ra   r7   N)rb   rc   rd   re   r=   rQ   rf   r#   r>   rg   r?   rh   r   r9   r   rB   r   rY   r`   ri   r7   r5   ry   ry   ¥   sÔ   € € € € € € ØRÐRà€Dˆ#ÐÐÑØØ4€K�Ð4Ð4Ñ4ØØ.€O�SÐ.Ð.Ñ.Ø8Ø�UØ6Ð6Ð7IÑJÔJðñ ô €Iˆsð ð ñ ð 1ð˜ð  ð ð ð ð ð$ ð $¨ð $ð $ð $ð $ð $ð $r7   ry   c                   ó¦   — e Zd ZU dZdZeed<   	 eZeed<   	 e	Z
ee         ed<   	  e ee¦  «        ¬¦  «        Zeed<   	 ded	efd
„Zded	efd„ZdS )ÚRequestsDeleteToolWithParsingz9Tool that sends a DELETE request and parses the response.Úrequests_deleter=   r>   r?   r@   rB   rC   r.   c                 óF  — ddl m} 	  ||¦  «        }n# t          j        $ r}|‚d }~ww xY wt	          t
          | j                             |d         ¦  «        ¦  «        }|d | j        …         }| j	         
                    ||d         ¬¦  «                             ¦   «         S )Nr   rE   rH   rI   rJ   )rM   rF   rN   rO   r   rQ   rR   Údeleter?   rB   rS   rT   rp   s         r5   rY   z"RequestsDeleteToolWithParsing._runÓ   s¼   € ØMÐMÐMÐMÐMÐMð	Ø&Ð& tÑ,Ô,ˆDˆDøÝÔ#ð 	ð 	ð 	ØˆGøøøøð	øøøå�S $Ô"7×">Ò">¸tÀE¼{Ñ"KÔ"KÑLÔLˆØÐ2˜dÔ2Ð2Ô3ˆØŒ~×%Ò%Ø¨DÐ1FÔ,Gð &ñ 
ô 
ç
Š%‰'Œ'ð	rZ   c              ƒ   ó"   K  — t          ¦   «         ‚r\   r]   r_   s     r5   r`   z#RequestsDeleteToolWithParsing._arunà   ra   r7   N)rb   rc   rd   re   r=   rQ   rf   r   r>   rg   r?   r	   rh   r   r9   r   rB   r   rY   r`   ri   r7   r5   r   r   Ä   sØ   € € € € € € ØCÐCà!€Dˆ#Ð!Ð!Ñ!ØØ7€K�Ð7Ð7Ñ7Ø&à%8€O�X˜c”]Ð8Ð8Ñ8Ø-Ø�UØ6Ð6Ð7LÑMÔMðñ ô €Iˆsð ð ñ ð 4ð˜ð  ð ð ð ð ð$ ð $¨ð $ð $ð $ð $ð $ð $r7   r   Úapi_specr3   c           	      óð   — ddl m} d„ | j        D ¦   «         }t          t          dgddd                     |¦  «        z   i¬¦  «        } |||¬¦  «        }t          t          t          |j	        ¬	¦  «        }|S )
Nr   r0   c                 ó$   — g | ]\  }}}|› d |› �‘ŒS )ú ri   )Ú.0r=   r>   Ú_s       r5   ú
<listcomp>z,_create_api_planner_tool.<locals>.<listcomp>ì   s9   € ð ð ð Ù$8 D¨+°qˆ4ÐÐ�+ÐÐðð ð r7   ÚqueryÚ	endpointsz- ©ÚtemplateÚinput_variablesÚpartial_variablesr2   )r=   r>   Úfunc)
r4   r1   rŒ   r   r   Újoinr   r   r   Úrun)r„   r3   r1   Úendpoint_descriptionsr-   ÚchainÚtools          r5   Ú_create_api_planner_toolr—   ç   s¬   € ð 6Ð5Ð5Ð5Ð5Ð5ðð Ø<DÔ<Nðñ ô Ðõ Ý#Ø ˜	Ø&¨¨t¯yªyÐ9NÑ/OÔ/OÑ(OÐPðñ ô €Fð
 ˆH˜ VÐ,Ñ,Ô,€EÝÝ"Ý0ØŒYðñ ô €Dð
 €Kr7   Úapi_urlÚapi_docsrR   Úallow_dangerous_requestsÚallowed_operationsc                 ó¾  — ddl m} ddlm} ddlm} g }	d|v r7 ||t          ¬¦  «        }
|	                     t          ||
|¬¦  «        ¦  «         d|v r7 ||t          ¬¦  «        }|	                     t          |||¬¦  «        ¦  «         d	|v r7 ||t          ¬¦  «        }|	                     t          |||¬¦  «        ¦  «         d
|v r7 ||t          ¬¦  «        }|	                     t          |||¬¦  «        ¦  «         d|v r7 ||t          ¬¦  «        }|	                     t!          |||¬¦  «        ¦  «         |	st#          d¦  «        ‚t%          t&          ddg| |d                     d„ |	D ¦   «         ¦  «        d                     d„ |	D ¦   «         ¦  «        dœ¬¦  «        } | |||¬¦  «        d„ |	D ¦   «         ¬¦  «        }|                     ||	d¬¦  «        S )Nr   ©ÚAgentExecutor©ÚZeroShotAgentr0   r(   r2   )rR   rB   rš   r)   r*   r+   r,   zTools not foundÚinputÚagent_scratchpadú, c                 ó   — g | ]	}|j         ‘Œ
S ri   ©r=   ©rˆ   r–   s     r5   rŠ   z0_create_api_controller_agent.<locals>.<listcomp>?  ó   € Ð$AÐ$AÐ$A°4 T¤YÐ$AÐ$AÐ$Ar7   ú
c                 ó0   — g | ]}|j         › d |j        › �‘ŒS ©z: ©r=   r>   r¦   s     r5   rŠ   z0_create_api_controller_agent.<locals>.<listcomp>A  ó+   € ÐFÐFÐF¸�D”IÐ3Ð3 Ô!1Ð3Ð3ÐFÐFÐFr7   )r˜   r™   Ú
tool_namesÚtool_descriptionsr�   c                 ó   — g | ]	}|j         ‘Œ
S ri   r¥   r¦   s     r5   rŠ   z0_create_api_controller_agent.<locals>.<listcomp>G  ó   € Ð3Ð3Ð3 T�t”yÐ3Ð3Ð3r7   ©rB   Úallowed_toolsT)ÚagentÚtoolsÚverbose)Úlangchain_classic.agents.agentrž   Ú"langchain_classic.agents.mrkl.baser    r4   r1   r   Úappendr;   r   rk   r   ry   r   r   r   rs   Ú
ValueErrorr   r   r’   Úfrom_agent_and_tools)r˜   r™   rR   r3   rš   r›   rž   r    r1   r´   Úget_llm_chainÚpost_llm_chainÚput_llm_chainÚdelete_llm_chainÚpatch_llm_chainr-   r³   s                    r5   Ú_create_api_controller_agentrÀ   ý   sÄ  € ð =Ð<Ð<Ð<Ð<Ð<Ø@Ð@Ð@Ð@Ð@Ð@Ø5Ð5Ð5Ð5Ð5Ð5à€EØÐ"Ð"Ð"Ø ˜ SÕ1CÐDÑDÔDˆØ�ŠÝ&Ø!1Ø'Ø)Aðñ ô ñ	
ô 	
ð 	
ð Ð#Ð#Ð#Ø!˜ cÕ2EÐFÑFÔFˆØ�ŠÝ'Ø!1Ø(Ø)Aðñ ô ñ	
ô 	
ð 	
ð Ð"Ð"Ð"Ø ˜ SÕ1CÐDÑDÔDˆØ�ŠÝ&Ø!1Ø'Ø)Aðñ ô ñ	
ô 	
ð 	
ð Ð%Ð%Ð%Ø#˜8¨Õ4IÐJÑJÔJÐØ�ŠÝ)Ø!1Ø*Ø)Aðñ ô ñ	
ô 	
ð 	
ð Ð$Ð$Ð$Ø"˜( sÕ3GÐHÑHÔHˆØ�ŠÝ(Ø!1Ø)Ø)Aðñ ô ñ	
ô 	
ð 	
ð ð ,ÝÐ*Ñ+Ô+Ð+ÝÝ&Ø Ð"4Ð5àØ ØŸ)š)Ð$AÐ$A¸5Ð$AÑ$AÔ$AÑBÔBØ!%§¢ØFÐFÀÐFÑFÔFñ"ô "ð	
ð 
ðñ ô €Fð ˆMØ�(˜s¨6Ð2Ñ2Ô2Ø3Ð3¨UÐ3Ñ3Ô3ðñ ô €Eð ×-Ò-°EÀÐPTÐ-ÑUÔUÐUr7   c                 óž   ‡ ‡‡‡‡‡— ‰ j         d         d         Šdt          dt          fˆˆˆ ˆˆˆfd„}t          t          |t          ¬¦  «        S )zÆExpose controller as a tool.

    The tool is invoked with a plan from the planner, and dynamically
    creates a controller agent with relevant documentation only to
    constrain the context.
    r   rH   Úplan_strr.   c           	      ó¬  •— d}t          j        || ¦  «        }d„ |D ¦   «         }d}|D ]ƒ}d}‰j        D ]c\  }}}	t          j        t          j        dd|¦  «        ¦  «        }
|
                     |¦  «        r d}|d|› d	t          j        |	¦  «        › d
�z  }Œd|st          |› d�¦  «        ‚Œ„t          ‰|‰‰‰‰¦  «        }| 
                    | ¦  «        S )Nz'\b(GET|POST|PATCH|DELETE|PUT)\s+(/\S+)*c                 ót   — g | ]5\  }}d                       ||                     d¦  «        d         ¬¦  «        ‘Œ6S )z{method} {route}ú?r   )ÚmethodÚroute)ÚformatÚsplit)rˆ   rÆ   rÇ   s      r5   rŠ   z]_create_api_controller_tool.<locals>._create_and_run_api_controller_agent.<locals>.<listcomp>_  sP   € ð 
ð 
ð 
á�˜ð ×%Ò%¨V¸5¿;º;ÀsÑ;KÔ;KÈAÔ;NÐ%ÑOÔOð
ð 
ð 
r7   Ú Fz\{.*?\}z.*Tz== Docs for z == 
r¨   z endpoint does not exist.)ÚreÚfindallrŒ   ÚcompileÚsubÚmatchÚyamlÚdumpr¹   rÀ   r“   )rÂ   ÚpatternÚmatchesÚendpoint_namesÚdocs_strÚendpoint_nameÚfound_matchr=   r‰   ÚdocsÚ
regex_namer³   rš   r›   r„   Úbase_urlr3   rR   s               €€€€€€r5   Ú$_create_and_run_api_controller_agentzI_create_api_controller_tool.<locals>._create_and_run_api_controller_agent\  s+  ø€ Ø<ˆÝ”*˜W hÑ/Ô/ˆð
ð 
à!(ð
ñ 
ô 
ˆð ˆØ+ð 	Nð 	NˆMØˆKØ!)Ô!3ð Xð X‘��a˜ÝœZ­¬¨{¸DÀ$Ñ(GÔ(GÑHÔH�
Ø×#Ò# MÑ2Ô2ð XØ"&�KØÐ W¨}Ð WÐ WÅDÄIÈdÁOÄOÐ WÐ WÐ WÑW�HøØð NÝ  MÐ!LÐ!LÐ!LÑMÔMÐMðNõ -ØØØØØ$Øñ
ô 
ˆð �yŠy˜Ñ"Ô"Ð"r7   )r=   r‘   r>   )ÚserversrQ   r   r   r   )r„   rR   r3   rš   r›   rÛ   rÚ   s   ````` @r5   Ú_create_api_controller_toolrÝ   L  sƒ   øøøøøø€ ð Ô Ô" 5Ô)€Hð#µsð #½sð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #õ8 Ý%Ø1Ý3ðñ ô ð r7   TF©r(   r)   Úshared_memoryÚcallback_managerrµ   Úagent_executor_kwargsÚkwargsc	           	      ó‚  — ddl m}
 ddlm} ddlm} t          | |¦  «        t          | ||||¦  «        g}t          t          ddgd 
                    d„ |D ¦   «         ¦  «        d	 
                    d
„ |D ¦   «         ¦  «        dœ¬¦  «        } |d ||||¬¦  «        d„ |D ¦   «         dœ|	¤Ž} |
j        d||||dœ|pi ¤ŽS )a  Construct an OpenAI API planner and controller for a given spec.

    Inject credentials via requests_wrapper.

    We use a top-level "orchestrator" agent to invoke the planner and controller,
    rather than a top-level planner
    that invokes a controller with its plan. This is to keep the planner simple.

    You need to set allow_dangerous_requests to True to use Agent with BaseRequestsTool.
    Requests can be dangerous and can lead to security vulnerabilities.
    For example, users can ask a server to make a request to an internal
    server. It's recommended to use requests through a proxy server
    and avoid accepting inputs from untrusted sources without proper sandboxing.
    Please see: https://python.langchain.com/docs/security
    for further security information.

    Args:
        api_spec: The OpenAPI spec.
        requests_wrapper: The requests wrapper.
        llm: The language model.
        shared_memory: Optional. The shared memory. Default is None.
        callback_manager: Optional. The callback manager. Default is None.
        verbose: Optional. Whether to print verbose output. Default is True.
        agent_executor_kwargs: Optional. Additional keyword arguments
            for the agent executor.
        allow_dangerous_requests: Optional. Whether to allow dangerous requests.
            Default is False.
        allowed_operations: Optional. The allowed operations.
            Default is ("GET", "POST").
        kwargs: Additional arguments.

    Returns:
        The agent executor.
    r   r�   rŸ   r0   r¡   r¢   r£   c                 ó   — g | ]	}|j         ‘Œ
S ri   r¥   r¦   s     r5   rŠ   z(create_openapi_agent.<locals>.<listcomp>¿  r§   r7   r¨   c                 ó0   — g | ]}|j         › d |j        › �‘ŒS rª   r«   r¦   s     r5   rŠ   z(create_openapi_agent.<locals>.<listcomp>Á  r¬   r7   )r­   r®   r�   )r3   r-   Úmemoryc                 ó   — g | ]	}|j         ‘Œ
S ri   r¥   r¦   s     r5   rŠ   z(create_openapi_agent.<locals>.<listcomp>Ç  r°   r7   r±   )r³   r´   rà   rµ   ri   )r¶   rž   r·   r    r4   r1   r—   rÝ   r   r   r’   rº   )r„   rR   r3   rß   rà   rµ   rá   rš   r›   râ   rž   r    r1   r´   r-   r³   s                   r5   Úcreate_openapi_agentrè     sc  € ð\ =Ð<Ð<Ð<Ð<Ð<Ø@Ð@Ð@Ð@Ð@Ð@Ø5Ð5Ð5Ð5Ð5Ð5õ 	! ¨3Ñ/Ô/Ý#ØØØØ$Øñ	
ô 	
ð	€Eõ Ý(Ø Ð"4Ð5àŸ)š)Ð$AÐ$A¸5Ð$AÑ$AÔ$AÑBÔBØ!%§¢ØFÐFÀÐFÑFÔFñ"ô "ð
ð 
ð	ñ 	ô 	€Fð ˆMð Ø�(˜s¨6¸-ÐHÑHÔHØ3Ð3¨UÐ3Ñ3Ô3ðð ð ðð €Eð
 .ˆ=Ô-ð ØØØ)Øð	ð ð
 !Ð& Bðð ð r7   )NNTNFrÞ   )Dre   rN   rË   Ú	functoolsr   Útypingr   r   r   r   r   r	   r
   r   rÐ   Úlangchain_core.callbacksr   Úlangchain_core.language_modelsr   Úlangchain_core.promptsr   r   Úlangchain_core.toolsr   r   Úpydanticr   Ú9langchain_community.agent_toolkits.openapi.planner_promptr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Ú/langchain_community.agent_toolkits.openapi.specr$   Úlangchain_community.llmsr%   Ú'langchain_community.tools.requests.toolr&   Ú&langchain_community.utilities.requestsr'   rg   Ú	Operationr6   r9   r;   rk   rs   ry   r   r—   rQ   ÚboolrÀ   rÝ   rè   ri   r7   r5   ú<module>r÷      sì  ðØ RÐ Rà €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oà €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø <Ð <Ð <Ð <Ð <Ð <Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& OÐ NÐ NÐ NÐ NÐ NØ +Ð +Ð +Ð +Ð +Ð +Ø DÐ DÐ DÐ DÐ DÐ DØ BÐ BÐ BÐ BÐ BÐ Bð Ð Ø 4àÐ;Ô<€	ðÐ#5ð ¸#ð ð ð ð ð3Øð3àˆb�#ˆgÔð3ð 3ð 3ð 3ð$ð $ð $ð $ð $Ð!1°8ñ $ô $ð $ðD$ð $ð $ð $ð $Ð"2°Hñ $ô $ð $ð>$ð $ð $ð $ð $Ð#3°Xñ $ô $ð $ðB$ð $ð $ð $ð $Ð!1°8ñ $ô $ð $ð>$ð $ð $ð $ð $Ð$4°hñ $ô $ð $ðFØ ðØ'8ðà	ðð ð ð ð,LVØðLVàðLVð &ðLVð 
ð	LVð
 #ðLVð ! Ô+ðLVð 	ðLVð LVð LVð LVð^0Ø ð0à%ð0ð 
ð0ð #ð	0ð
 ! Ô+ð0ð 
ð0ð 0ð 0ð 0ðn $(Ø6:ØØ6:Ø%*Ø.=ðQð QØ ðQà%ðQð 
ðQð ˜C”=ð	Qð
 Ð2Ô3ðQð ðQð $ D¨¨c¨¤NÔ3ðQð #ðQð ! Ô+ðQð ðQð 	ðQð Qð Qð Qð Qð Qr7   