
    dh8
                     z    S SK r S SKJrJrJr  S SKrS SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJr   " S S\5      rg)	    N)AnyDictList)Documentget_from_dict_or_env)	BaseModel
ConfigDict	SecretStrmodel_validator)URLc                       \ rS rSr% Sr\\S'   Sr\\S'    \	" SS9r
\" SS	9\S
\S\4S j5       5       rS\S\4S jrS\S\\   4S jrS\S\\   4S jrSrg)JinaSearchAPIWrapper   z&Wrapper around the Jina search engine.api_keyzhttps://s.jina.ai/base_urlforbid)extrabefore)modevaluesreturnc                 (    [        USS5      nX!S'   U$ )z9Validate that api key and endpoint exists in environment.r   JINA_API_KEYr   )clsr   r   s      a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/jina_search.pyvalidate_environment)JinaSearchAPIWrapper.validate_environment   s     'vy.I#y    queryc           	          U R                  US9nU Vs/ sHF  nUR                  S5      UR                  S5      UR                  S5      UR                  S5      S.PMH     nn[        R                  " U5      $ s  snf )zQuery the Jina 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    titleurldescriptioncontent)r"   linksnippetr%   )_search_requestgetjsondumps)selfr    web_search_resultsitemfinal_resultss        r   runJinaSearchAPIWrapper.run    s     "111> +
 + '*88M288I.	 + 	 
 zz-((
s   AA8c                     U R                  U5      nU Vs/ sHM  n[        UR                  S5      UR                  S5      UR                  S5      UR                  S5      S.S9PMO     sn$ s  snf )zQuery the Jina 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.

r%   r"   r#   r$   )r"   r&   r$   )page_contentmetadata)r(   r   r)   )r,   r    resultsr.   s       r   download_documents'JinaSearchAPIWrapper.download_documents5   sx     &&u-  

   !XXi0!XXg. HHUO#'88M#:  

 
	
 

s   AA,c                 >   SSU R                   R                  5        3S.n[        [        U R                  U-   5      5      n[
        R                  " X2S9nUR                  (       d  [        SUR                   35      eUR                  5       R                  S/ 5      $ )Nzapplication/jsonzBearer )AcceptAuthorization)headerszHTTP error data)r   get_secret_valuestrr   r   requestsr)   ok	Exceptionstatus_coder*   )r,   r    r;   r#   responses        r   r(   $JinaSearchAPIWrapper._search_requestK   s    (&t||'D'D'F&GH
 #dmme+,-<<5{{k(*>*>)?@AA}}""62..r    N)__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r>   r
   model_configr   classmethodr   r   r   r0   r   r   r6   dictr(   __static_attributes__rE   r   r   r   r      s    0(Hc(2L (#$ 3   $) ) )*
 
X 
,
/S 
/T$Z 
/r   r   )r*   typingr   r   r   r?   langchain_core.documentsr   langchain_core.utilsr   pydanticr	   r
   r   r   yarlr   r   rE   r   r   <module>rU      s.     " "  - 5 F F J/9 J/r   