
    h	                         d 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 ddlmZ  G d de
      Z G d	 d
e      Z G d de      Zy)z Tool for the SearxNG search API.    )OptionalType)AsyncCallbackManagerForToolRunCallbackManagerForToolRun)BaseTool)	BaseModel
ConfigDictField)SearxSearchWrapperc                   .    e Zd ZU dZ ed      Zeed<   y)SearxSearchQueryInputzInput for the SearxSearch tool.zquery to look up on searx)descriptionqueryN)__name__
__module____qualname____doc__r
   r   str__annotations__     i/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/tools/searx_search/tool.pyr   r      s    )#>?E3?r   r   c                       e Zd ZU dZdZeed<   dZeed<   eed<    e	e
      Ze
ed<   eZee   ed	<   	 ddedee   defdZ	 ddedee   defdZy
)SearxSearchRunz#Tool that queries a Searx instance.searx_searchnamezvA meta search engine.Useful for when you need to answer questions about current events.Input should be a search query.r   wrapperdefault_factorykwargsargs_schemaNr   run_managerreturnc                 P     | j                   j                  |fi | j                  S zUse the tool.)r   runr    selfr   r"   s      r   _runzSearxSearchRun._run"   s$      t||555r   c                 l   K    | j                   j                  |fi | j                   d{   S 7 wzUse the tool asynchronously.N)r   arunr    r'   s      r   _arunzSearxSearchRun._arun*   s.      'T\\&&u<<<<<s   +424N)r   r   r   r   r   r   r   r   r   r
   dictr    r   r!   r   r   r   r   r)   r   r-   r   r   r   r   r      s    -D#	*  
  .FD.#8Ki8
 <@66 786 
	6 AE== <== 
	=r   r   c                       e Zd ZU dZdZeed<   dZeed<   eed<   dZ	e
ed<    ee	      Zeed
<   eZee   ed<    ed      Z	 ddedee   defdZ	 ddedee   defdZy)SearxSearchResultsz6Tool that queries a Searx instance and gets back json.searx_search_resultsr   zA meta search engine.Useful for when you need to answer questions about current events.Input should be a search query. Output is a JSON array of the query resultsr   r      num_resultsr   r    r!   allow)extraNr   r"   r#   c                 x    t         | j                  j                  || j                  fi | j                        S r%   )r   r   resultsr4   r    r'   s      r   r)   zSearxSearchResults._runE   s2     '4<<''t/?/?O4;;OPPr   c                    K    | j                   j                  || j                  fi | j                   d{   j	                         S 7 wr+   )r   aresultsr4   r    __str__r'   s      r   r-   zSearxSearchResults._arunM   s?      ($,,''t/?/?O4;;OO
')	Os   6AAAr.   )r   r   r   r   r   r   r   r   r   r4   intr
   r/   r    r   r!   r   r   r	   model_configr   r   r)   r   r-   r   r   r   r1   r1   3   s    @&D#&	V  
  K.FD.#8Ki8L <@QQ 78Q 
	Q AE <= 
	r   r1   N)r   typingr   r   langchain_core.callbacksr   r   langchain_core.toolsr   pydanticr   r	   r
   *langchain_community.utilities.searx_searchr   r   r   r1   r   r   r   <module>rC      sD    & ! * 1 1 I@I @=X =<" "r   