o
    ȳg                     @   sT   d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 G dd deZ
dS )    N)List)Document)	BaseModel)URLc                   @   s^   e Zd ZU dZdZeed< 	 dedefddZdedee	 fdd	Z
dedee fd
dZdS )JinaSearchAPIWrapperz&Wrapper around the Jina search engine.zhttps://s.jina.ai/base_urlqueryreturnc                 C   s$   | j |d}dd |D }t|S )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   c                 S   s2   g | ]}| d | d| d| ddqS )titleurldescriptioncontent)r
   linksnippetr   )get.0item r   e/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain_community/utilities/jina_search.py
<listcomp>   s    z,JinaSearchAPIWrapper.run.<locals>.<listcomp>)_search_requestjsondumps)selfr   web_search_resultsfinal_resultsr   r   r   run   s
   	
	zJinaSearchAPIWrapper.runc                 C   s   |  |}dd |D S )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.

        c              	   S   s8   g | ]}t |d |d|d|dddqS )r   r
   r   r   )r
   r   r   )page_contentmetadata)r   r   r   r   r   r   r   /   s    	z;JinaSearchAPIWrapper.download_documents.<locals>.<listcomp>)r   )r   r   resultsr   r   r   download_documents%   s   
		z'JinaSearchAPIWrapper.download_documentsc                 C   sN   ddi}t t| j| }tj||d}|jstd|j | dg S )NAcceptzapplication/json)headerszHTTP error data)	strr   r   requestsr   ok	Exceptionstatus_coder   )r   r   r#   r   responser   r   r   r   ;   s   z$JinaSearchAPIWrapper._search_requestN)__name__
__module____qualname____doc__r   r%   __annotations__r   r   r   r!   dictr   r   r   r   r   r   
   s   
 r   )r   typingr   r&   langchain_core.documentsr   pydanticr   yarlr   r   r   r   r   r   <module>   s    