
    NgX
                     Z    d dl Z d dlmZ d dlZd dlmZ d dlmZmZ  G d de          Z	dS )    N)List)Document)	BaseModelFieldc                       e Zd ZU dZeed<   	  ee          Zeed<   	 dZ	eed<   	 dedefd	Z
dedee         fd
Zdedee         fdZdS )BraveSearchWrapperz'Wrapper around the Brave search engine.api_key)default_factorysearch_kwargsz.https://api.search.brave.com/res/v1/web/searchbase_urlqueryreturnc                 n    |                      |          }d |D             }t          j        |          S )zQuery the Brave search engine and return the results as a JSON string.

        Args:
            query: The query to search for.

        Returns: The results as a JSON string.

        )r   c                     g | ]y}|                     d           |                     d          d                    t          d|                     d          g|                     dg                               dzS )titleurl Ndescriptionextra_snippets)r   linksnippet)getjoinfilter.0items     f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/brave_search.py
<listcomp>z*BraveSearchWrapper.run.<locals>.<listcomp>   s     
 
 
  '**88txx66XBRTV9W9WX   
 
 
    )_search_requestjsondumps)selfr   web_search_resultsfinal_resultss       r   runzBraveSearchWrapper.run   sM     "111>>
 
 +
 
 
 z-(((r    c                 D    |                      |          }d |D             S )zQuery the Brave search engine and return the results as a list of Documents.

        Args:
            query: The query to search for.

        Returns: The results as a list of Documents.

        c                    g | ]}t          d                     t          d|                    d          g|                    dg                               |                    d          |                    d          d          S )r   Nr   r   r   r   )r   r   )page_contentmetadata)r   r   r   r   r   s     r   r   z9BraveSearchWrapper.download_documents.<locals>.<listcomp>5   s     

 

 

   XXtxx66XBRTV9W9WX  
 $(88G#4#4dhhuooNN  

 

 

r    )r!   )r$   r   resultss      r   download_documentsz%BraveSearchWrapper.download_documents+   s:     &&u--

 

  

 

 

 
	
r    c                    | j         dd}t          j                    }i | j        |dd}|                    | j        |           |j        t          d          t          j        |j        |          }|j	        st          d|j                   |                                                    di                               d	g           S )
Nzapplication/json)zX-Subscription-TokenAcceptT)qr   z,prepared url is None, this should not happen)headerszHTTP error webr,   )r	   requestsPreparedRequestr   prepare_urlr   r   
ValueErrorr   ok	Exceptionstatus_coder"   )r$   r   r1   reqparamsresponses         r   r!   z"BraveSearchWrapper._search_requestA   s    $(L(
 
 &((OD&O*N*NOv...7?KLLL<999{ 	B@(*>@@AAA}}""5"--11)R@@@r    N)__name__
__module____qualname____doc__str__annotations__r   dictr   r   r'   r   r   r-   r!    r    r   r   r   	   s         11LLL9%555M4555EDHcDDD3) ) ) ) ) )0
 
X 
 
 
 
,AS AT$Z A A A A A Ar    r   )
r"   typingr   r3   langchain_core.documentsr   pydanticr   r   r   rD   r    r   <module>rH      s            - - - - - - % % % % % % % %GA GA GA GA GA GA GA GA GA GAr    