§
    è˜ºhÅ]  ã                   óš
  — U d Z ddlZddlmZmZmZmZmZmZ ddl	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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( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZC ddlDmEZE ddlFmGZG dd lHmIZImJZJmKZKmLZLmMZM dd!lNmOZO dd"lPmQZQ dd#lRmSZSmTZT dd$lUmVZV dd%lWmXZX dd&lYmZZZ dd'l[m\Z\ dd(l]m^Z^ dd)l_m`Z` dd*lambZb dd+lcmdZd dd,lcmeZe dd-lfmgZg dd.lhmiZi dd/ljmkZk dd0llmmZm dd1lnmoZo dd2lpmqZq dd3lrmsZs dd4ltmuZu dd5lvmwZw dd6lxmyZy dd7lzm{Z{ dd8l|m}Z} dd9l~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dAlŽm�Z� ddBl�m‘Z‘ ddCl’m“Z“ ddDl”m•Z• ddEl–m—Z— ddFl˜m™Z™ ddGlšm›Z› ddHlœm�Z� dIe(fdJ„ZždIe(fdK„ZŸdIe(fdL„Z dIe(fdM„Z¡dIe(fdN„Z¢dIe(fdO„Z£dIe(fdP„Z¤ežežeŸe e¡e¢e£e¤dQœZ¥ee¦eg e(f         f         e§dR<   dSedIe(fdT„Z¨dSedIe(fdU„Z©e¨e©dVœZªee¦eege(f         f         e§dW<   dSedXedIe(fdY„Z«dSedXedIe(fdZ„Z¬dSedXedIe(fd[„Z­dXedIe(fd\„Z®dXedIe(fd]„Z¯dXedIe(fd^„Z°dXedIe(fd_„Z±dXedIe(fd`„Z²dXedIe(fda„Z³dXedIe(fdb„Z´dXedIe(fdc„ZµdXedIe(fdd„Z¶dXedIe(fde„Z·dXedIe(fdf„Z¸dXedIe(fdg„Z¹dXedIe(fdh„ZºdXedIe(fdi„Z»dXedIe(fdj„Z¼dXedIe(fdk„Z½dXedIe(fdl„Z¾dXedIe(fdm„Z¿dXedIe(fdn„ZÀdXedIe(fdo„ZÁdXedIefdp„ZÂdXedIe(fdq„ZÃdXedIe(fdr„ZÄdXedIe(fds„ZÅdXedIe(fdt„ZÆdXedIe(fdu„ZÇdXedIe(fdv„ZÈdXedIe(fdw„ZÉdXedIe(fdx„ZÊdXedIe(fdy„ZËdXedIe(fdz„ZÌdXedIe(fd{„ZÍdXedIe(fd|„ZÎdXedIe(fd}„ZÏdSedXedIe(fd~„ZÐdXedIe(fd„ZÑdXedIe(fd€„ZÒe«d�gfe¬d‚gfe­dƒgfeÐg fd„œZÓee¦ee e
edS¦  «         ee¦  «        ge(f         ee¦         f         f         e§d…<   i d†e¯d‡gf“dˆe°d‰dŠgf“d‹e½g dŒ¢f“d�eÅg dŽ¢f“d�eÆd�d‘gf“d’eÇd“gf“d”eÈg f“d•e·d–gf“d—e¸d˜d™gf“dše¹g d›¢f“dœeºd–gf“d�e»d–gf“dže¶d–gf“dŸe¼d˜d™gf“d e¾d¡d™gf“d¢e¿d¡d™gf“d£eÀd¤d™gf“i d¥eÂd¦gf“d§eÃg d¨¢f“d©eÄg dª¢f“d«e±d¬gf“d­e²d®d¯gf“d°e³g d±¢f“d²e´d³gf“d´eµd®gf“dµeÉd¶d·gf“d¸e®g d¹¢f“dºeÁg f“d»eÊg f“d¼eËd½gf“d¾eÌd¿gf“dÀeÍg dÁ¢f“dÂeÎg dÁ¢f“dÃeÏdÄgf“¥eÑg feÒg dÅ¢fdÆœ¥ZÔee¦ee ee¦  «        ge(f         ee¦         f         f         e§dÇ<   dÈee         dÉedIefdÊ„ZÕ	 	 	 dÔdÌe¦dÍee¦         dÎee¦         dÏeÖdXedIe(fdÐ„Z×	 	 dÕdÑee¦         dSee         dÉedXedIee(         f
dÒ„ZØdIee¦         fdÓ„ZÙdS )Öa±  Tools provide access to various resources and services.

LangChain has a large ecosystem of integrations with various external resources
like local and remote file systems, APIs and databases.

These integrations allow developers to create versatile applications that combine the
power of LLMs with the ability to access, interact with and manipulate external
resources.

When developing an application, developers should inspect the capabilities and
permissions of the tools that underlie the given agent toolkit, and determine
whether permissions of the given toolkit are appropriate for the application.

See [Security](https://python.langchain.com/docs/security) for more information.
é    N)ÚAnyÚDictÚListÚOptionalÚCallableÚTuple)ÚArgÚKwArg)ÚTool)ÚBaseLanguageModel)ÚBaseCallbackManager)Ú	Callbacks)Ú	news_docsÚopen_meteo_docsÚpodcast_docsÚ	tmdb_docs)ÚAPIChain)ÚLLMMathChain)ÚDallEAPIWrapper)ÚTextRequestsWrapper)ÚArxivQueryRun)ÚGoldenQueryRun)ÚPubmedQueryRun)ÚBaseTool)ÚBingSearchRun)ÚDuckDuckGoSearchRun©ÚGoogleCloudTextToSpeechTool)ÚGoogleLensQueryRun)ÚGoogleSearchResultsÚGoogleSearchRun)ÚGoogleScholarQueryRun)ÚGoogleFinanceQueryRun)ÚGoogleTrendsQueryRun)ÚMetaphorSearchResults)ÚGoogleJobsQueryRun)ÚGoogleSerperResultsÚGoogleSerperRun)ÚSearchAPIResultsÚSearchAPIRun)ÚBaseGraphQLTool©ÚHumanInputRun)ÚRequestsDeleteToolÚRequestsGetToolÚRequestsPatchToolÚRequestsPostToolÚRequestsPutTool©ÚElevenLabsText2SpeechTool©ÚSceneXplainTool)ÚSearxSearchResultsÚSearxSearchRun©Ú	ShellTool©Ú	SleepTool)ÚStackExchangeTool)ÚMerriamWebsterQueryRun)ÚWikipediaQueryRun)ÚWolframAlphaQueryRun)ÚOpenWeatherMapQueryRun)ÚDataForSeoAPISearchRun)ÚDataForSeoAPISearchResults©ÚMemorize)ÚRedditSearchRun)ÚArxivAPIWrapper)ÚGoldenQueryAPIWrapper)ÚPubMedAPIWrapper)ÚBingSearchAPIWrapper)ÚDuckDuckGoSearchAPIWrapper)ÚGoogleLensAPIWrapper)ÚGoogleJobsAPIWrapper)ÚGoogleSearchAPIWrapper)ÚGoogleSerperAPIWrapper)ÚGoogleScholarAPIWrapper)ÚGoogleFinanceAPIWrapper)ÚGoogleTrendsAPIWrapper)ÚMetaphorSearchAPIWrapper)ÚLambdaWrapper)ÚGraphQLAPIWrapper)ÚSearchApiAPIWrapper)ÚSearxSearchWrapper)ÚSerpAPIWrapper)ÚStackExchangeAPIWrapper)ÚTwilioAPIWrapper)ÚMerriamWebsterAPIWrapper)ÚWikipediaAPIWrapper)ÚWolframAlphaAPIWrapper)ÚOpenWeatherMapAPIWrapper)ÚDataForSeoAPIWrapper)ÚRedditSearchAPIWrapperÚreturnc                  ó:   — t          t          ¦   «         ¬¦  «        S ©N)Úrequests_wrapper)r/   r   © ó    úc/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain/agents/load_tools.pyÚ_get_tools_requests_getrh   l   ó   € ÝÕ,?Ñ,AÔ,AÐBÑBÔBÐBrf   c                  ó:   — t          t          ¦   «         ¬¦  «        S rc   )r1   r   re   rf   rg   Ú_get_tools_requests_postrk   p   s   € ÝÕ-@Ñ-BÔ-BÐCÑCÔCÐCrf   c                  ó:   — t          t          ¦   «         ¬¦  «        S rc   )r0   r   re   rf   rg   Ú_get_tools_requests_patchrm   t   s   € ÝÕ.AÑ.CÔ.CÐDÑDÔDÐDrf   c                  ó:   — t          t          ¦   «         ¬¦  «        S rc   )r2   r   re   rf   rg   Ú_get_tools_requests_putro   x   ri   rf   c                  ó:   — t          t          ¦   «         ¬¦  «        S rc   )r.   r   re   rf   rg   Ú_get_tools_requests_deleterq   |   s   € ÝÕ/BÑ/DÔ/DÐEÑEÔEÐErf   c                  ó   — t          ¦   «         S ©Nr9   re   rf   rg   Ú_get_terminalrt   €   ó   € Ý‰;Œ;Ðrf   c                  ó   — t          ¦   «         S rs   r;   re   rf   rg   Ú
_get_sleeprw   „   ru   rf   )ÚrequestsÚrequests_getÚrequests_postÚrequests_patchÚrequests_putÚrequests_deleteÚterminalÚsleepÚ_BASE_TOOLSÚllmc                 óˆ   — t          ddt          j        | ¬¦  «        j        t          j        | ¬¦  «        j        ¬¦  «        S )NÚ
Calculatorz8Useful for when you need to answer questions about math.©r�   ©ÚnameÚdescriptionÚfuncÚ	coroutine)r   r   Úfrom_llmÚrunÚarunr„   s    rg   Ú_get_llm_mathr�   ”   sG   € ÝØØNÝÔ" sÐ+Ñ+Ô+Ô/ÝÔ'¨CÐ0Ñ0Ô0Ô5ð	ñ ô ð rf   c                 ót   — t          j        | t          j        dg¬¦  «        }t	          dd|j        ¬¦  «        S )Nzhttps://api.open-meteo.com/)Úlimit_to_domainszOpen-Meteo-APIz˜Useful for when you want to get weather information from the OpenMeteo API. The input should be a question in natural language that this API can answer.©r†   r‡   rˆ   )r   Úfrom_llm_and_api_docsr   ÚOPEN_METEO_DOCSr   r‹   )r�   Úchains     rg   Ú_get_open_meteo_apir”   �   sO   € ÝÔ*ØÝÔ'Ø7Ð8ðñ ô €Eõ
 Øð oØŒYðñ ô ð rf   )zllm-mathzopen-meteo-apiÚ
_LLM_TOOLSÚkwargsc                 óŠ   — |d         }t          j        | t          j        d|idg¬¦  «        }t	          dd|j        ¬¦  «        S )NÚnews_api_keyz	X-Api-Keyzhttps://newsapi.org/©Úheadersr�   zNews-APIz§Use this when you want to get information about the top headlines of current news stories. The input should be a question in natural language that this API can answer.r�   )r   r‘   r   Ú	NEWS_DOCSr   r‹   )r�   r–   r˜   r“   s       rg   Ú_get_news_apirœ   °   sa   € Ø˜.Ô)€LÝÔ*ØÝÔØ˜lÐ+Ø0Ð1ð	ñ ô €Eõ Øð ~ØŒYðñ ô ð rf   c                 ó�   — |d         }t          j        | t          j        dd|› �idg¬¦  «        }t	          dd|j        ¬¦  «        S )	NÚtmdb_bearer_tokenÚAuthorizationzBearer zhttps://api.themoviedb.org/r™   zTMDB-APIz‘Useful for when you want to get information from The Movie Database. The input should be a question in natural language that this API can answer.r�   )r   r‘   r   Ú	TMDB_DOCSr   r‹   )r�   r–   rž   r“   s       rg   Ú_get_tmdb_apir¡   ¿   sm   € ØÐ2Ô3ÐÝÔ*ØÝÔØ Ð"?Ð,=Ð"?Ð"?Ð@Ø7Ð8ð	ñ ô €Eõ Øð hØŒYðñ ô ð rf   c                 óŠ   — |d         }t          j        | t          j        d|idg¬¦  «        }t	          dd|j        ¬¦  «        S )NÚlisten_api_keyzX-ListenAPI-Keyz#https://listen-api.listennotes.com/r™   zPodcast-APIz‘Use the Listen Notes Podcast API to search all podcasts or episodes. The input should be a question in natural language that this API can answer.r�   )r   r‘   r   ÚPODCAST_DOCSr   r‹   )r�   r–   r£   r“   s       rg   Ú_get_podcast_apir¥   Î   sb   € ØÐ,Ô-€NÝÔ*ØÝÔ!Ø" NÐ3Ø?Ð@ð	ñ ô €Eõ Øð hØŒYðñ ô ð rf   c            	      ó\   — t          | d         | d         t          di | ¤Žj        ¬¦  «        S )NÚawslambda_tool_nameÚawslambda_tool_descriptionr�   re   )r   rT   r‹   ©r–   s    rg   Ú_get_lambda_apirª   Ý   s?   € ÝØÐ)Ô*ØÐ7Ô8ÝÐ$Ð$˜VÐ$Ð$Ô(ðñ ô ð rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S ©N)Úapi_wrapperre   )r@   r]   r©   s    rg   Ú_get_wolfram_alphar®   å   ó"   € ÝÕ,BÐ,LÐ,LÀVÐ,LÐ,LÐMÑMÔMÐMrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r!   rN   r©   s    rg   Ú_get_google_searchr±   é   ó"   € ÝÕ'=Ð'GÐ'GÀÐ'GÐ'GÐHÑHÔHÐHrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r>   r[   r©   s    rg   Ú_get_merriam_websterr´   í   ó"   € Ý!Õ.FÐ.PÐ.PÈÐ.PÐ.PÐQÑQÔQÐQrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r?   r\   r©   s    rg   Ú_get_wikipediar·   ñ   s"   € ÝÕ)<Ð)FÐ)F¸vÐ)FÐ)FÐGÑGÔGÐGrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rG   r©   s    rg   Ú
_get_arxivr¹   õ   s!   € Ý¥_Ð%>Ð%>°vÐ%>Ð%>Ð?Ñ?Ô?Ð?rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rH   r©   s    rg   Ú_get_golden_queryr»   ù   s"   € ÝÕ&;Ð&EÐ&E¸fÐ&EÐ&EÐFÑFÔFÐFrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rI   r©   s    rg   Ú_get_pubmedr½   ý   s"   € ÝÕ&6Ð&@Ð&@¸Ð&@Ð&@ÐAÑAÔAÐArf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r&   rM   r©   s    rg   Ú_get_google_jobsr¿     ó"   € ÝÕ*>Ð*HÐ*HÀÐ*HÐ*HÐIÑIÔIÐIrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rL   r©   s    rg   Ú_get_google_lensrÂ     rÀ   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r(   rO   r©   s    rg   Ú_get_google_serperrÄ   	  r²   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r"   rP   r©   s    rg   Ú_get_google_scholarrÆ     ó"   € Ý Õ-DÐ-NÐ-NÀvÐ-NÐ-NÐOÑOÔOÐOrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r#   rQ   r©   s    rg   Ú_get_google_financerÉ     rÇ   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r$   rR   r©   s    rg   Ú_get_google_trendsrË     r¯   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r'   rO   r©   s    rg   Ú_get_google_serper_results_jsonrÍ     ó"   € ÝÕ+AÐ+KÐ+KÀFÐ+KÐ+KÐLÑLÔLÐLrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r    rN   r©   s    rg   Ú_get_google_search_results_jsonrÐ     rÎ   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r*   rV   r©   s    rg   Ú_get_searchapirÒ   !  s"   € ÝÕ$7Ð$AÐ$A¸&Ð$AÐ$AÐBÑBÔBÐBrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r)   rV   r©   s    rg   Ú_get_searchapi_results_jsonrÔ   %  s"   € ÝÕ(;Ð(EÐ(E¸fÐ(EÐ(EÐFÑFÔFÐFrf   c            
      ód   — t          ddt          di | ¤Žj        t          di | ¤Žj        ¬¦  «        S )NÚSearchzsA search engine. Useful for when you need to answer questions about current events. Input should be a search query.r…   re   )r   rX   r‹   rŒ   r©   s    rg   Ú_get_serpapir×   )  sJ   € ÝØð JÝÐ%Ð%˜fÐ%Ð%Ô)Ý Ð*Ð* 6Ð*Ð*Ô/ð	ñ ô ð rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r=   rY   r©   s    rg   Ú_get_stackexchangerÙ   2  s"   € ÝÕ)@Ð)JÐ)JÀ6Ð)JÐ)JÐKÑKÔKÐKrf   c                  óB   — t          dt          di | ¤Žj        d¦  «        S )NzDall-E-Image-GeneratorzŽA wrapper around OpenAI DALL-E API. Useful for when you need to generate images from a text description. Input should be an image description.re   )r   r   r‹   r©   s    rg   Ú_get_dalle_image_generatorrÛ   6  s1   € ÝØ ÝÐ!Ð!˜&Ð!Ð!Ô%ð 	Yñô ð rf   c            	      óD   — t          ddt          di | ¤Žj        ¬¦  «        S )NzText-MessagezKUseful for when you need to send a text message to a provided phone number.r�   re   )r   rZ   r‹   r©   s    rg   Ú_get_twiliorÝ   >  s3   € ÝØØaÝÐ'Ð' Ð'Ð'Ô+ðñ ô ð rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S )N)Úwrapperre   )r8   rW   r©   s    rg   Ú_get_searx_searchrà   F  s"   € ÝÕ"4Ð">Ð">°vÐ">Ð">Ð?Ñ?Ô?Ð?rf   c            	      ón   — d„ |                       ¦   «         D ¦   «         }t          ddt          di |¤Ži| ¤ŽS )Nc                 ó&   — i | ]\  }}|d k    ¯||“ŒS )Únum_resultsre   )Ú.0ÚkÚvs      rg   ú
<dictcomp>z2_get_searx_search_results_json.<locals>.<dictcomp>K  s(   € ÐLÐLÐL™t˜q !¸¸mÒ9KÐ9K�a˜Ð9KÐ9KÐ9Krf   rß   re   )Úitemsr7   rW   )r–   Úwrapper_kwargss     rg   Ú_get_searx_search_results_jsonrê   J  sE   € ØLÐL v§|¢|¡~¤~ÐLÑLÔL€NÝÐUÐUÕ&8Ð&JÐ&J¸>Ð&JÐ&JÐUÈfÐUÐUÐUrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rJ   r©   s    rg   Ú_get_bing_searchrì   O  s"   € ÝÕ%9Ð%CÐ%C¸FÐ%CÐ%CÐDÑDÔDÐDrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r%   rS   r©   s    rg   Ú_get_metaphor_searchrî   S  s"   € Ý Õ-EÐ-OÐ-OÈÐ-OÐ-OÐPÑPÔPÐPrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )r   rK   r©   s    rg   Ú_get_ddg_searchrð   W  s"   € ÝÕ+EÐ+OÐ+OÈÐ+OÐ+OÐPÑPÔPÐPrf   c                  ó   — t          di | ¤ŽS ©Nre   r,   r©   s    rg   Ú_get_human_toolró   [  s   € ÝÐ"Ð"˜6Ð"Ð"Ð"rf   c                  ó   — t          di | ¤ŽS rò   r5   r©   s    rg   Ú_get_scenexplainrõ   _  s   € ÝÐ$Ð$˜VÐ$Ð$Ð$rf   c                  óR   — | d         }t          |¬¦  «        }t          |¬¦  «        S )NÚgraphql_endpoint)r÷   )Úgraphql_wrapper)rU   r+   )r–   r÷   rß   s      rg   Ú_get_graphql_toolrù   c  s0   € ØÐ0Ô1ÐÝÐ1AÐBÑBÔB€GÝ¨7Ð3Ñ3Ô3Ð3rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )rA   r^   r©   s    rg   Ú_get_openweathermaprû   i  rµ   rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )rB   r_   r©   s    rg   Ú_get_dataforseo_api_searchrý   m  s"   € Ý!Õ.BÐ.LÐ.LÀVÐ.LÐ.LÐMÑMÔMÐMrf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )rC   r_   r©   s    rg   Ú_get_dataforseo_api_search_jsonrÿ   q  s"   € Ý%Õ2FÐ2PÐ2PÈÐ2PÐ2PÐQÑQÔQÐQrf   c                  ó   — t          di | ¤ŽS rò   r3   r©   s    rg   Ú_get_eleven_labs_text2speechr  u  s   € Ý$Ð.Ð. vÐ.Ð.Ð.rf   c                 ó"   — t          | ¬¦  «        S )Nr„   rD   )r�   r–   s     rg   Ú_get_memorizer  y  s   € Ý˜ÐÑÔÐrf   c                  ó   — t          di | ¤ŽS rò   r   r©   s    rg   Ú_get_google_cloud_texttospeechr  }  s   € Ý&Ð0Ð0¨Ð0Ð0Ð0rf   c                  ó6   — t          t          di | ¤Ž¬¦  «        S r¬   )rF   r`   r©   s    rg   Ú_get_reddit_searchr  �  r²   rf   r˜   rž   r£   )znews-apiztmdb-apizpodcast-apiÚmemorizeÚ_EXTRA_LLM_TOOLSzwolfram-alphaÚwolfram_alpha_appidzgoogle-searchÚgoogle_api_keyÚgoogle_cse_idzgoogle-search-results-json)r  r  rã   zsearx-search-results-json)Ú
searx_hostÚenginesrã   Ú
aiosessionzbing-searchÚbing_subscription_keyÚbing_search_urlzmetaphor-searchÚmetaphor_api_keyz
ddg-searchzgoogle-lensÚserp_api_keyzgoogle-serperÚserper_api_keyr  zgoogle-scholar)Útop_k_resultsÚhlÚlrr  zgoogle-financezgoogle-trendszgoogle-jobszgoogle-serper-results-jsonÚ	searchapiÚsearchapi_api_keyzsearchapi-results-jsonÚserpapiÚserpapi_api_keyzdalle-image-generatorÚopenai_api_keyÚtwilio)Úaccount_sidÚ
auth_tokenÚfrom_numberzsearx-search)r  r  r  zmerriam-websterÚmerriam_webster_api_keyÚ	wikipediar  ÚlangÚarxiv)r  Úload_max_docsÚload_all_available_metazgolden-queryÚgolden_api_keyÚpubmedÚhumanÚprompt_funcÚ
input_funcÚ	awslambda)r§   r¨   Úfunction_nameÚstackexchangeÚsceneXplainÚgraphqlr÷   zopenweathermap-apiÚopenweathermap_api_keyzdataforseo-api-search)Ú	api_loginÚapi_passwordr  zdataforseo-api-search-jsonÚeleven_labs_text2speechÚeleven_api_key)Úreddit_client_idÚreddit_client_secretÚreddit_user_agent)Úgoogle_cloud_texttospeechÚreddit_searchÚ_EXTRA_OPTIONAL_TOOLSÚcallback_managerÚ	callbacksc                 ód   — | �-t          j        dt          ¦  «         |�t          d¦  «        ‚| S |S )Nz=callback_manager is deprecated. Please use callbacks instead.z=Cannot specify both callback_manager and callbacks arguments.)ÚwarningsÚwarnÚDeprecationWarningÚ
ValueError©r<  r=  s     rg   Ú_handle_callbacksrD  Ý  sO   € ð Ð#ÝŒØKÝñ	
ô 	
ð 	
ð Ð ÝØOñô ð ð  ÐØÐrf   FÚtask_or_repo_idÚmodel_repo_idÚtokenÚremotec                 óZ  — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w || f|||dœ|¤Ž}|j        }t	          |¦  «        dhk    rt          d¦  «        ‚|j        }t	          |¦  «        dhk    rt          d¦  «        ‚t          j        |j	        |j
        |j        ¬¦  «        S )	a  Loads a tool from the HuggingFace Hub.

    Args:
        task_or_repo_id: Task or model repo id.
        model_repo_id: Optional model repo id.
        token: Optional token.
        remote: Optional remote. Defaults to False.
        **kwargs:

    Returns:
        A tool.
    r   )Ú	load_toolzºHuggingFace tools require the libraries `transformers>=4.29.0` and `huggingface_hub>=0.14.1` to be installed. Please install it with `pip install --upgrade transformers huggingface_hub`.)rF  rG  rH  Útextz%Multimodal outputs not supported yet.z$Multimodal inputs not supported yet.)r†   r‡   )ÚtransformersrJ  ÚImportErrorÚoutputsÚsetÚNotImplementedErrorÚinputsr   Úfrom_functionÚ__call__r†   r‡   )	rE  rF  rG  rH  r–   rJ  Úhf_toolrN  rQ  s	            rg   Úload_huggingface_toolrU  í  sÿ   € ð&
Ø*Ð*Ð*Ð*Ð*Ð*Ð*øÝð 
ð 
ð 
ÝðEñ
ô 
ð 	
ð
øøøð ˆiØðà#ØØð	ð ð
 ðð €Gð Œo€GÝ
ˆ7�|„|˜�xÒÐÝ!Ð"IÑJÔJÐJØŒ^€FÝ
ˆ6�{„{�v�hÒÐÝ!Ð"HÑIÔIÐIÝÔØÔ˜wœ|¸Ô9Lðñ ô ð s   ‚	 ‰#Ú
tool_namesc                 óØ  ‡— g }t          ‰                     d¦  «        |¬¦  «        }| D �]°}|dk    rt          j        d¦  «         |dk    r'd„ t          D ¦   «         }|                      |¦  «         ŒJ|t          v r(|                     t	          |         ¦   «         ¦  «         Œ{|t          v r@|€t          d|› d	�¦  «        ‚t          |         |¦  «        }|                     |¦  «         ŒÄ|t          v r�|€t          d|› d	�¦  «        ‚t          |         \  }}	t          |	¦  «                             ‰¦  «        }
|
rt          d|› d
|
› �¦  «        ‚ˆfd„|	D ¦   «         } |dd|i|¤Ž}|                     |¦  «         �ŒZ|t          v r=t          |         \  }}	ˆfd„|	D ¦   «         } |di |¤Ž}|                     |¦  «         �Œ t          d|› �¦  «        ‚|�|D ]	}||_        Œ
|S )a  Load tools based on their name.

    Tools allow agents to interact with various resources and services like
    APIs, databases, file systems, etc.

    Please scope the permissions of each tools to the minimum required for the
    application.

    For example, if an application only needs to read from a database,
    the database tool should not be given write permissions. Moreover
    consider scoping the permissions to only allow accessing specific
    tables and impose user-level quota for limiting resource usage.

    Please read the APIs of the individual tools to determine which configuration
    they support.

    See [Security](https://python.langchain.com/docs/security) for more information.

    Args:
        tool_names: name of tools to load.
        llm: An optional language model, may be needed to initialize certain tools.
        callbacks: Optional callback manager or list of callback handlers.
            If not provided, default global callback manager will be used.

    Returns:
        List of tools.
    r<  rC  rx   z]tool name `requests` is deprecated - please use `requests_all` or specify the requests methodÚrequests_allc                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )Ú	requests_)Ú
startswith)rä   Ú_tools     rg   ú
<listcomp>zload_tools.<locals>.<listcomp>J  s;   € ð %ð %ð %Ø°%×2BÒ2BÀ;Ñ2OÔ2Oð%Øð%ð %ð %rf   NzTool z requires an LLM to be providedz2 requires some parameters that were not provided: c                 ó"   •— i | ]}|‰|         “ŒS re   re   ©rä   rå   r–   s     €rg   rç   zload_tools.<locals>.<dictcomp>_  s   ø€ Ð;Ð;Ð;¨1˜!˜V AœYÐ;Ð;Ð;rf   r�   c                 ó*   •— i | ]}|‰v ¯|‰|         “ŒS re   re   r_  s     €rg   rç   zload_tools.<locals>.<dictcomp>d  s$   ø€ ÐJÐJÐJ¨1¸aÀ6¸k¸k˜!˜V AœY¸k¸k¸krf   zGot unknown tool re   )rD  Úgetr?  r@  r€   ÚextendÚappendr•   rB  r	  rO  Ú
differencer;  r=  )rV  r�   r=  r–   Útoolsr†   Úrequests_method_toolsÚtoolÚ_get_llm_tool_funcÚ
extra_keysÚmissing_keysÚ
sub_kwargsÚ_get_tool_funcs      `         rg   Ú
load_toolsrm    s˜  ø€ ðB €EÝ!ØŸšÐ$6Ñ7Ô7À9ðñ ô €Ið
 ð &9ñ &9ˆØ�:ÒÐÝŒMðKñô ð ð �>Ò!Ð!ð%ð %Ý#.ð%ñ %ô %Ð!ð ×ÒÐ3Ñ4Ô4Ð4Ð4Ø•[Ð Ð Ø�LŠL� TÔ*Ñ,Ô,Ñ-Ô-Ð-Ð-Ø•ZÐÐØˆ{Ý Ð!N¨Ð!NÐ!NÐ!NÑOÔOÐOÝ˜dÔ# CÑ(Ô(ˆDØ�LŠL˜ÑÔÐÐØÕ%Ð%Ð%Øˆ{Ý Ð!N¨Ð!NÐ!NÐ!NÑOÔOÐOÝ-=¸dÔ-CÑ*Ð 
Ý˜z™?œ?×5Ò5°fÑ=Ô=ˆLØð Ý ð0˜Dð 0ð 0Ø!-ð0ð 0ñô ð ð <Ð;Ð;Ð;°
Ð;Ñ;Ô;ˆJØ%Ð%Ð<Ð<¨#Ð<°Ð<Ð<ˆDØ�LŠL˜ÑÔÐÑØÕ*Ð*Ð*Ý)>¸tÔ)DÑ&ˆN˜JØJÐJÐJÐJ°
ÐJÑJÔJˆJØ!�>Ð/Ð/ JÐ/Ð/ˆDØ�LŠL˜ÑÔÐÑåÐ7°Ð7Ð7Ñ8Ô8Ð8ØÐØð 	'ð 	'ˆDØ&ˆDŒNˆNØ€Lrf   c                  ó¨   — t          t          ¦  «        t          t          ¦  «        z   t          t          ¦  «        z   t          t          ¦  «        z   S )z&Get a list of all possible tool names.)Úlistr€   r;  r	  r•   re   rf   rg   Úget_all_tool_namesrp  o  sH   € õ 	�[ÑÔÝ
Õ$Ñ
%Ô
%ñ	&å
ÕÑ
 Ô
 ñ	!õ �zÑ
Ô
ñ	ðrf   )NNF)NN)ÚÚ__doc__r?  Útypingr   r   r   r   r   r   Úmypy_extensionsr	   r
   Úlangchain.agents.toolsr   Úlangchain_core.language_modelsr   Úlangchain.callbacks.baser   Úlangchain.callbacks.managerr   Úlangchain.chains.apir   r   r   r   Úlangchain.chains.api.baser   Úlangchain.chains.llm_math.baser   Ú3langchain_community.utilities.dalle_image_generatorr   Ú&langchain_community.utilities.requestsr   Ú$langchain_community.tools.arxiv.toolr   Ú+langchain_community.tools.golden_query.toolr   Ú%langchain_community.tools.pubmed.toolr   Úlangchain_core.toolsr   Ú*langchain_community.tools.bing_search.toolr   Ú)langchain_community.tools.ddg_search.toolr   Ú3langchain_community.tools.google_cloud.texttospeechr   Ú*langchain_community.tools.google_lens.toolr   Ú,langchain_community.tools.google_search.toolr    r!   Ú-langchain_community.tools.google_scholar.toolr"   Ú-langchain_community.tools.google_finance.toolr#   Ú,langchain_community.tools.google_trends.toolr$   Ú.langchain_community.tools.metaphor_search.toolr%   Ú*langchain_community.tools.google_jobs.toolr&   Ú,langchain_community.tools.google_serper.toolr'   r(   Ú(langchain_community.tools.searchapi.toolr)   r*   Ú&langchain_community.tools.graphql.toolr+   Ú$langchain_community.tools.human.toolr-   Ú'langchain_community.tools.requests.toolr.   r/   r0   r1   r2   Ú1langchain_community.tools.eleven_labs.text2speechr4   Ú*langchain_community.tools.scenexplain.toolr6   Ú+langchain_community.tools.searx_search.toolr7   r8   Ú$langchain_community.tools.shell.toolr:   Ú$langchain_community.tools.sleep.toolr<   Ú,langchain_community.tools.stackexchange.toolr=   Ú.langchain_community.tools.merriam_webster.toolr>   Ú(langchain_community.tools.wikipedia.toolr?   Ú,langchain_community.tools.wolfram_alpha.toolr@   Ú-langchain_community.tools.openweathermap.toolrA   Ú/langchain_community.tools.dataforseo_api_searchrB   rC   Ú'langchain_community.tools.memorize.toolrE   Ú,langchain_community.tools.reddit_search.toolrF   Ú#langchain_community.utilities.arxivrG   Ú*langchain_community.utilities.golden_queryrH   Ú$langchain_community.utilities.pubmedrI   Ú)langchain_community.utilities.bing_searchrJ   Ú/langchain_community.utilities.duckduckgo_searchrK   Ú)langchain_community.utilities.google_lensrL   Ú)langchain_community.utilities.google_jobsrM   Ú+langchain_community.utilities.google_searchrN   Ú+langchain_community.utilities.google_serperrO   Ú,langchain_community.utilities.google_scholarrP   Ú,langchain_community.utilities.google_financerQ   Ú+langchain_community.utilities.google_trendsrR   Ú-langchain_community.utilities.metaphor_searchrS   Ú'langchain_community.utilities.awslambdarT   Ú%langchain_community.utilities.graphqlrU   Ú'langchain_community.utilities.searchapirV   Ú*langchain_community.utilities.searx_searchrW   Ú%langchain_community.utilities.serpapirX   Ú+langchain_community.utilities.stackexchangerY   Ú$langchain_community.utilities.twiliorZ   Ú-langchain_community.utilities.merriam_websterr[   Ú'langchain_community.utilities.wikipediar\   Ú+langchain_community.utilities.wolfram_alphar]   Ú,langchain_community.utilities.openweathermapr^   Ú3langchain_community.utilities.dataforseo_api_searchr_   Ú+langchain_community.utilities.reddit_searchr`   rh   rk   rm   ro   rq   rt   rw   r€   ÚstrÚ__annotations__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Ù   rÛ   rÝ   rà   rê   rì   rî   rð   ró   rõ   rù   rû   rý   rÿ   r  r  r  r  r	  r;  rD  ÚboolrU  rm  rp  re   rf   rg   ú<module>rº     sX  ððð ð ð €€€Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø <Ð <Ð <Ð <Ð <Ð <Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TØ .Ð .Ð .Ð .Ð .Ð .Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø OÐ OÐ OÐ OÐ OÐ OØ FÐ FÐ FÐ FÐ FÐ FØ >Ð >Ð >Ð >Ð >Ð >Ø FÐ FÐ FÐ FÐ FÐ FØ @Ð @Ð @Ð @Ð @Ð @Ø )Ð )Ð )Ð )Ð )Ð )Ø DÐ DÐ DÐ DÐ DÐ DØ IÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð ð ð PÐ OÐ OÐ OÐ OÐ OØ OÐ OÐ OÐ OÐ OÐ OØ MÐ MÐ MÐ MÐ MÐ MØ PÐ PÐ PÐ PÐ PÐ PØ IÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð ð ð TÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ BÐ BÐ BÐ BÐ BÐ BØ >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð XÐ WÐ WÐ WÐ WÐ WØ FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø :Ð :Ð :Ð :Ð :Ð :Ø JÐ JÐ JÐ JÐ JÐ JØ QÐ QÐ QÐ QÐ QÐ QØ FÐ FÐ FÐ FÐ FÐ FØ MÐ MÐ MÐ MÐ MÐ MØ PÐ PÐ PÐ PÐ PÐ PØ RÐ RÐ RÐ RÐ RÐ RØ VÐ VÐ VÐ VÐ VÐ VØ <Ð <Ð <Ð <Ð <Ð <Ø HÐ HÐ HÐ HÐ HÐ HØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø LÐ LÐ LÐ LÐ LÐ LØ AÐ AÐ AÐ AÐ AÐ AØ JÐ JÐ JÐ JÐ JÐ JØ VÐ VÐ VÐ VÐ VÐ VØ JÐ JÐ JÐ JÐ JÐ JØ JÐ JÐ JÐ JÐ JÐ JØ NÐ NÐ NÐ NÐ NÐ NØ NÐ NÐ NÐ NÐ NÐ NØ PÐ PÐ PÐ PÐ PÐ PØ PÐ PÐ PÐ PÐ PÐ PØ NÐ NÐ NÐ NÐ NÐ NØ RÐ RÐ RÐ RÐ RÐ RØ AÐ AÐ AÐ AÐ AÐ AØ CÐ CÐ CÐ CÐ CÐ CØ GÐ GÐ GÐ GÐ GÐ GØ IÐ IÐ IÐ IÐ IÐ IØ @Ð @Ð @Ð @Ð @Ð @Ø OÐ OÐ OÐ OÐ OÐ OØ AÐ AÐ AÐ AÐ AÐ AØ RÐ RÐ RÐ RÐ RÐ RØ GÐ GÐ GÐ GÐ GÐ GØ NÐ NÐ NÐ NÐ NÐ NØ QÐ QÐ QÐ QÐ QÐ QØ TÐ TÐ TÐ TÐ TÐ TØ NÐ NÐ NÐ NÐ NÐ NðC ð Cð Cð Cð CðD (ð Dð Dð Dð DðE 8ð Eð Eð Eð EðC ð Cð Cð Cð CðF Hð Fð Fð Fð Fð�xð ð ð ð ð�Hð ð ð ð ð
 (Ø+Ø-Ø/Ø+Ø1ØØð	2ð 	2€ˆT�#�x  H Ô-Ð-Ô.ð 	ð 	ñ 	ðÐ(ð ¨Xð ð ð ð ð
Ð.ð 
°8ð 
ð 
ð 
ð 
ð Ø)ðBð B€
ˆD��hÐ 1Ð2°HÐ<Ô=Ð=Ô>ð ð ñ ðÐ(ð °Cð ¸Hð ð ð ð ðÐ(ð °Cð ¸Hð ð ð ð ðÐ+ð °sð ¸xð ð ð ð ð˜cð  hð ð ð ð ðN ð N¨ð Nð Nð Nð NðI ð I¨ð Ið Ið Ið IðR 3ð R¨8ð Rð Rð Rð RðH˜Sð H Xð Hð Hð Hð Hð@˜ð @ ð @ð @ð @ð @ðG ð G¨ð Gð Gð Gð GðB˜#ð B (ð Bð Bð Bð BðJ˜sð J xð Jð Jð Jð JðJ˜sð J xð Jð Jð Jð JðI ð I¨ð Ið Ið Ið IðP #ð P¨(ð Pð Pð Pð PðP #ð P¨(ð Pð Pð Pð PðN ð N¨ð Nð Nð Nð NðM¨cð M°hð Mð Mð Mð MðM¨cð M°hð Mð Mð Mð MðC˜Sð C Xð Cð Cð Cð CðG¨#ð G°(ð Gð Gð Gð Gð˜3ð  8ð ð ð ð ðL ð L¨ð Lð Lð Lð Lð¨ð °ð ð ð ð ð˜#ð  (ð ð ð ð ð@ ð @¨ð @ð @ð @ð @ðV¨Sð V°Xð Vð Vð Vð Vð
E˜sð E xð Eð Eð Eð EðQ 3ð Q¨8ð Qð Qð Qð QðQ˜cð Q hð Qð Qð Qð Qð#˜cð # hð #ð #ð #ð #ð%˜sð % xð %ð %ð %ð %ð4 ð 4¨ð 4ð 4ð 4ð 4ðR #ð R¨(ð Rð Rð Rð RðN¨ð N°ð Nð Nð Nð NðR¨cð R°hð Rð Rð Rð Rð/¨3ð /°8ð /ð /ð /ð /ðÐ(ð °Cð ¸Hð ð ð ð ð1¨Sð 1°Xð 1ð 1ð 1ð 1ðI ð I¨ð Ið Ið Ið Ið  Ð 0Ð1ØÐ!4Ð 5Ð6Ø$Ð'7Ð&8Ð9Ø Ð#ð	ð ð �$ØØ	ˆ(�C�CÐ)¨5Ñ1Ô1°5°5¸±:´:Ð>ÀÐHÔ
IÈ4ÐPSÌ9Ð
TÔUðWôð ð ñ ðLXØÐ(Ð+@Ð*AÐBðLXàÐ(Ð+;¸_Ð*MÐNðLXð !Ø'Ø:Ð:Ð:ð#ðLXð  Ø&Ø>Ð>Ð>ð"ðLXð Ð$Ð'>Ð@QÐ&RÐSðLXð Ð,Ð/AÐ.BÐCðLXð �? BÐ'ðLXð Ð$ ~Ð&6Ð7ðLXð Ð(Ð+;¸\Ð*JÐKðLXð  ØØ5Ð5Ð5ðð!LXð( ØØ	Ððð)LXð0 ØØ	Ððð1LXð8 ØØ	Ððð9LXð@ !Ø'Ø	˜<Ð(ð#ðALXðH �.Ð#6¸Ð"EÐFðILXðJ Ø#Ø	˜lÐ+ððKLXðR �Ð0°,Ð?Ð@ðSLXð LXðT Ð8Ð;KÐ:LÐMðULXðV ˆ{ÐHÐHÐHÐIðWLXðX Ð&Ð(OÐ(OÐ(OÐPðYLXðZ Ð,Ð/HÐ.IÐJð[LXð\ �. ?°FÐ";Ð<ð]LXð^ ØØEÐEÐEðð_LXðf Ð&Ð)9Ð(:Ð;ðgLXðh ˆ{˜_Ð-Ð.ðiLXðj ˆo ¨|Ð<Ð=ðkLXðl ØØNÐNÐNððmLXðt Ð(¨"Ð-ðuLXðv Ð$ bÐ)ðwLXðx Ð!Ð$6Ð#7Ð8ðyLXðz Ð.Ð1IÐ0JÐKð{LXð| Ø"Ø3Ð3Ð3ðð}LXðD !Ø'Ø3Ð3Ð3ð#ðELXðL Ð <Ð?OÐ>PÐQðMLXð LXðN #AÀ"Ð!EàØIÐIÐIððQLXð LXð LXÐ �t˜C  x°°°s±´°¸hÐ0FÔ'GÈÈcÌÐ'RÔ!SÐSÔTð Lð Lñ Lð^ØÐ2Ô3ðØ@Iðàðð ð ð ð$ $(ØØð	+ð +Øð+à˜C”=ð+ð �CŒ=ð+ð ð	+ð
 ð+ð ð+ð +ð +ð +ð` (,ØðQð QØ�S”	ðQà	Ð#Ô	$ðQð ðQð ð	Qð
 
ˆ(„^ðQð Qð Qð Qðh˜D œIð ð ð ð ð ð rf   