o
    ȳg
                     @   s   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 de
ZG d	d
 d
eZG dd deZdS )z Tool for the SearxNG search API.    )OptionalType)AsyncCallbackManagerForToolRunCallbackManagerForToolRun)BaseTool)	BaseModel
ConfigDictField)SearxSearchWrapperc                   @   s$   e Zd ZU dZeddZeed< dS )SearxSearchQueryInputzInput for the SearxSearch tool.zquery to look up on searx)descriptionqueryN)__name__
__module____qualname____doc__r	   r   str__annotations__ r   r   g/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain_community/tools/searx_search/tool.pyr      s   
 r   c                   @   s   e Zd ZU dZdZeed< dZeed< eed< e	e
dZe
ed< eZee ed	< 	
ddedee defddZ	
ddedee defddZd
S )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                 C   s   | j j|fi | jS zUse the tool.)r   runr   selfr   r   r   r   r   _run"   s   zSearxSearchRun._runc                    s   | j j|fi | jI dH S zUse the tool asynchronously.N)r   arunr   r"   r   r   r   _arun*   s   zSearxSearchRun._arun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      s0   
 

r   c                   @   s   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d	Zeed
< eZee ed< eddZ	ddedee defddZ	ddedee defddZdS )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                 C   s   t | jj|| jfi | jS r    )r   r   resultsr-   r   r"   r   r   r   r$   E   s   zSearxSearchResults._runc                    s&   | j j|| jfi | jI dH  S r%   )r   aresultsr-   r   __str__r"   r   r   r   r'   M   s   zSearxSearchResults._arunr(   )r   r   r   r   r   r   r   r   r
   r-   intr	   r)   r   r   r   r   r   r   model_configr   r   r$   r   r'   r   r   r   r   r*   3   s8   
 

r*   N)r   typingr   r   langchain_core.callbacksr   r   langchain_core.toolsr   pydanticr   r   r	   *langchain_community.utilities.searx_searchr
   r   r   r*   r   r   r   r   <module>   s    