
    dh                    j    S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr   " S S\5      rg	)
    )annotations)AnyOptional)CallbackManagerForToolRun)BaseTool)Field	SecretStrBraveSearchWrapperc                      \ rS rSr% SrSrS\S'   SrS\S'   \" \	S9r
S	\S
'   \ S       SS jj5       r\SS j5       r S     SS jjrSrg)BraveSearch   a  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                N    [        [        U5      U=(       d    0 S9nU " SSU0UD6$ )zCreate 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        c/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/tools/brave_search/tool.pyfrom_api_keyBraveSearch.from_api_key0   s2     %g&m6Ir
 4'4V44    c                (    [        US9nU " SSU0UD6$ )a  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_kwargsBraveSearch.from_search_kwargsC   s!      %=A4'4V44r   c                8    U R                   R                  U5      $ )zUse the tool.)r   run)selfqueryrun_managers      r   _runBraveSearch._runV   s     ""&&u--r   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____firstlineno____doc__r   __annotations__r   r   r   r   classmethodr   r!   r(   __static_attributes__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>r:      s%    "   > ) % IP.( P.r   