
    h                    j    d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ  G d de      Zy	)
    )annotations)AnyOptional)CallbackManagerForToolRun)BaseTool)Field	SecretStrBraveSearchWrapperc                      e Zd ZU dZdZded<   dZded<    ee      Z	ded	<   e
	 d	 	 	 	 	 	 	 dd       Ze
dd       Z	 d	 	 	 	 	 ddZy
)BraveSearcha1  Tool that queries the BraveSearch.

    Api key can be provided as an environment variable BRAVE_SEARCH_API_KEY
    or as a parameter.


    Example usages:
    .. code-block:: python
        # uses BRAVE_SEARCH_API_KEY from environment
        tool = BraveSearch()

    .. code-block:: python
        # uses the provided api key
        tool = BraveSearch.from_api_key("your-api-key")

    .. code-block:: python
        # uses the provided api key and search kwargs
        tool = BraveSearch.from_api_key(
                                api_key = "your-api-key",
                                search_kwargs={"max_results": 5}
                                )

    .. code-block:: python
        # uses BRAVE_SEARCH_API_KEY from environment
        tool = BraveSearch.from_search_kwargs({"max_results": 5})
    brave_searchstrnamezsa search engine. useful for when you need to answer questions about current events. input should be a search query.description)default_factoryr   search_wrapperNc                J    t        t        |      |xs i       } | dd|i|S )a  Create a tool from an api key.

        Args:
            api_key: The api key to use.
            search_kwargs: Any additional kwargs to pass to the search wrapper.
            **kwargs: Any additional kwargs to pass to the tool.

        Returns:
            A tool.
        )api_keysearch_kwargsr    )r   r	   )clsr   r   kwargswrappers        i/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/tools/brave_search/tool.pyfrom_api_keyzBraveSearch.from_api_key0   s2     %g&m6Ir
 4'4V44    c                .    t        |      } | dd|i|S )a9  Create a tool from search kwargs.

        Uses the environment variable BRAVE_SEARCH_API_KEY for api key.

        Args:
            search_kwargs: Any additional kwargs to pass to the search wrapper.
            **kwargs: Any additional kwargs to pass to the tool.

        Returns:
            A tool.
        )r   r   r   r
   )r   r   r   r   s       r   from_search_kwargszBraveSearch.from_search_kwargsC   s!      %=A4'4V44r   c                8    | j                   j                  |      S )zUse the tool.)r   run)selfqueryrun_managers      r   _runzBraveSearch._runV   s     ""&&u--r   )N)r   r   r   zOptional[dict]r   r   returnr   )r   dictr   r   r&   r   )r#   r   r$   z#Optional[CallbackManagerForToolRun]r&   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   classmethodr   r   r%   r   r   r   r   r      s    6 D#	+  
 */?Q)RN&R;?55*85KN5	5 5$ 5 5* <@.. 9. 
	.r   r   N)
__future__r   typingr   r   langchain_core.callbacksr   langchain_core.toolsr   pydanticr   r	   *langchain_community.utilities.brave_searchr   r   r   r   r   <module>r4      s%    "   > ) % IP.( P.r   