§
    šŠtj^  ã                   óf   — d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
mZ  G d„ de	¦  «        ZdS )é    )ÚAnyÚDictÚOptionalN©Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validatorc                   óh  — e Zd ZU dZdZeed<   dZee         ed<   dZ	ee
j                 ed<    ed¬¦  «        Z ed	¬
¦  «        ededefd„¦   «         ¦   «         Zdededefd„Zdededefd„Zdededefd„Zdededefd„Zdededefd„Zdededefd„Zdededefd„Zededefd„¦   «         ZdS )ÚSearchApiAPIWrappera}  
    Wrapper around SearchApi API.

    To use, you should have the environment variable ``SEARCHAPI_API_KEY``
    set with your API key, or pass `searchapi_api_key`
    as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.utilities import SearchApiAPIWrapper
            searchapi = SearchApiAPIWrapper()
    ÚgoogleÚengineNÚsearchapi_api_keyÚ
aiosessionT)Úarbitrary_types_allowedÚbefore)ÚmodeÚvaluesÚreturnc                 ó2   — t          |dd¦  «        }||d<   |S )z,Validate that API key exists in environment.r   ÚSEARCHAPI_API_KEYr   )Úclsr   r   s      úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/utilities/searchapi.pyÚvalidate_environmentz(SearchApiAPIWrapper.validate_environment"   s/   € õ 1ØÐ'Ð)<ñ
ô 
Ðð '8ˆÐ"Ñ#Øˆó    ÚqueryÚkwargsc                 óH   —  | j         |fi |¤Ž}|                      |¦  «        S ©N)ÚresultsÚ_result_as_string©Úselfr   r   r    s       r   ÚrunzSearchApiAPIWrapper.run,   s/   € Ø�$”,˜uÐ/Ð/¨Ð/Ð/ˆØ×%Ò% gÑ.Ô.Ð.r   c              ‹   óX   K  —  | j         |fi |¤Žƒ d {V —†}|                      |¦  «        S r   )Úaresultsr!   r"   s       r   ÚarunzSearchApiAPIWrapper.arun0   sE   è è € Ø%˜œ eÐ6Ð6¨vÐ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ˆØ×%Ò% gÑ.Ô.Ð.r   c                 ó"   —  | j         |fi |¤Ž}|S r   )Ú_search_api_resultsr"   s       r   r    zSearchApiAPIWrapper.results4   s!   € Ø*�$Ô*¨5Ð;Ð;°FÐ;Ð;ˆØˆr   c              ‹   ó2   K  —  | j         |fi |¤Žƒ d {V —†}|S r   )Ú_async_search_api_resultsr"   s       r   r&   zSearchApiAPIWrapper.aresults8   s7   è è € Ø6˜Ô6°uÐGÐGÀÐGÐGÐGÐGÐGÐGÐGÐGˆØˆr   c                 ón   — ddd| j         › �i| j        |dœd„ |                     ¦   «         D ¦   «         ¥dœS )Nz&https://www.searchapi.io/api/v1/searchÚAuthorizationzBearer )r   Úqc                 ó   — i | ]
\  }}|®||“ŒS r   © )Ú.0ÚkeyÚvalues      r   ú
<dictcomp>z8SearchApiAPIWrapper._prepare_request.<locals>.<dictcomp>E   s#   € ÐTÐTÐT¡* # uÀ%ÐBS�3˜ÐBSÐBSÐBSr   )ÚurlÚheadersÚparams)r   r   Úitems)r#   r   r   s      r   Ú_prepare_requestz$SearchApiAPIWrapper._prepare_request<   s_   € à;àÐ!C¨4Ô+AÐ!CÐ!Cðð œ+Øðð ð UÐT°·²±´ÐTÑTÔTðð

ð 

ð 
	
r   c                 óÀ   —  | j         |fi |¤Ž}t          j        |d         |d         |d         ¬¦  «        }|                     ¦   «          |                     ¦   «         S )Nr5   r7   r6   )r5   r7   r6   )r9   ÚrequestsÚgetÚraise_for_statusÚjson)r#   r   r   Úrequest_detailsÚresponses        r   r)   z'SearchApiAPIWrapper._search_api_resultsI   sl   € Ø/˜$Ô/°Ð@Ð@¸Ð@Ð@ˆÝ”<Ø Ô&Ø" 8Ô,Ø# IÔ.ð
ñ 
ô 
ˆð
 	×!Ò!Ñ#Ô#Ð#Ø�}Š}‰ŒÐr   c              ‹   óz  K  —  | j         |fi |¤Ž}| j        s®t          j        ¦   «         4 ƒd{V —†}|                     |d         |d         |d         d¬¦  «        4 ƒd{V —†	 }|                     ¦   «         ƒ d{V —†}ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   nu| j                             |d         |d         |d         d¬¦  «        4 ƒd{V —†	 }|                     ¦   «         ƒ d{V —†}ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |S )zFUse aiohttp to send request to SearchApi API and return results async.Nr5   r6   r7   T)r5   r6   r7   r=   )r9   r   ÚaiohttpÚClientSessionr<   r>   )r#   r   r   r?   Úsessionr@   r    s          r   r+   z-SearchApiAPIWrapper._async_search_api_resultsS   s  è è € à/˜$Ô/°Ð@Ð@¸Ð@Ð@ˆØŒð 	0ÝÔ,Ñ.Ô.ð 4ð 4ð 4ð 4ð 4ð 4ð 4°'Ø"Ÿ;š;Ø'¨Ô.Ø+¨IÔ6Ø*¨8Ô4Ø%)ð	 'ñ ô ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð
 Ø$,§M¢M¡O¤OÐ3Ð3Ð3Ð3Ð3Ð3�Gð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4øð ”×*Ò*Ø# EÔ*Ø'¨	Ô2Ø& xÔ0Ø!%ð	 +ñ ô ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð
 Ø (§¢¡¤Ð/Ð/Ð/Ð/Ð/Ð/�ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð ˆsG   ±2B4Á$BÁ?B4Â
B	ÂB4ÂB	ÂB4Â4
B>ÃB>Ã=D*Ä*
D4Ä7D4Úresultc                 óJ  — d}d|                       ¦   «         v r,d| d                               ¦   «         v r| d         d         }�n^d|                       ¦   «         v r,d| d                               ¦   «         v r| d         d         }�nd|                       ¦   «         v r| d         d         }n÷d|                       ¦   «         v r(d„ | d         D ¦   «         }d	                     |¦  «        }n¹d
|                       ¦   «         v r(d„ | d
         D ¦   «         }d	                     |¦  «        }n{d|                       ¦   «         v r(d„ | d         D ¦   «         }d	                     |¦  «        }n=d|                       ¦   «         v r'd„ | d         D ¦   «         }d	                     |¦  «        }|S )NzNo good search result foundÚ
answer_boxÚanswerÚsnippetÚknowledge_graphÚdescriptionÚorganic_resultsc                 óJ   — g | ] }d |                      ¦   «         v ¯|d          ‘Œ!S )rI   ©Úkeys©r1   Úrs     r   ú
<listcomp>z9SearchApiAPIWrapper._result_as_string.<locals>.<listcomp>s   s:   € ð ð ð Ø!"À9ÐPQ×PVÒPVÑPXÔPXÐCXÐCX��)”ÐCXÐCXÐCXr   ú
Újobsc                 óJ   — g | ] }d |                      ¦   «         v ¯|d          ‘Œ!S )rK   rN   rP   s     r   rR   z9SearchApiAPIWrapper._result_as_string.<locals>.<listcomp>x   s6   € ð ð ð Ø%&¸MÈQÏVÊVÉXÌXÐ<UÐ<U��-Ô Ð<UÐ<UÐ<Ur   Úvideosc                 ób   — g | ],}d |                      ¦   «         v ¯d|d          › d|d         › �‘Œ-S )ÚtitleúTitle: "ú" Link: ÚlinkrN   rP   s     r   rR   z9SearchApiAPIWrapper._result_as_string.<locals>.<listcomp>}   sM   € ð ð ð àØ˜aŸfšf™hœhÐ&Ð&ð ?˜Q˜wœZÐ>Ð>°°6´Ð>Ð>à&Ð&Ð&r   Úimagesc                 ón   — g | ]2}d |                      ¦   «         v ¯d|d         › d|d          d         › �‘Œ3S )ÚoriginalrY   rX   rZ   r[   rN   rP   s     r   rR   z9SearchApiAPIWrapper._result_as_string.<locals>.<listcomp>„   sS   € ð ð ð àØ §¢¡¤Ð)Ð)ð K˜Q˜wœZÐJÐJ°°:´¸vÔ1FÐJÐJà)Ð)Ð)r   )rO   Újoin)rE   ÚtoretÚsnippetsrT   rV   r\   s         r   r!   z%SearchApiAPIWrapper._result_as_stringi   s×  € à-ˆØ˜6Ÿ;š;™=œ=Ð(Ð(¨X¸ÀÔ9M×9RÒ9RÑ9TÔ9TÐ-TÐ-TØ˜<Ô(¨Ô2ˆE‰EØ˜VŸ[š[™]œ]Ð*Ð*¨y¸FÀ<Ô<P×<UÒ<UÑ<WÔ<WÐ/WÐ/WØ˜<Ô(¨Ô3ˆE‰EØ &§+¢+¡-¤-Ð/Ð/ØÐ,Ô-¨mÔ<ˆEˆEØ &§+¢+¡-¤-Ð/Ð/ðð Ø&,Ð->Ô&?ðñ ô ˆHð —I’I˜hÑ'Ô'ˆEˆEØ�v—{’{‘}”}Ð$Ð$ðð Ø*0°¬.ðñ ô ˆDð —I’I˜d‘O”OˆEˆEØ˜Ÿš™œÐ&Ð&ðð à Ô)ðñ ô ˆFð
 —I’I˜fÑ%Ô%ˆEˆEØ˜Ÿš™œÐ&Ð&ðð à Ô)ðñ ô ˆFð
 —I’I˜fÑ%Ô%ˆEØˆr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   r   r   rB   rC   r	   Úmodel_configr
   Úclassmethodr   r   r   r$   r'   Údictr    r&   r9   r)   r+   Ústaticmethodr!   r0   r   r   r   r   	   s  € € € € € € ðð ð  €FˆCÐÐÑØ'+Ð�x ”}Ð+Ð+Ñ+Ø26€J�˜Ô.Ô/Ð6Ð6Ñ6à�:Ø $ðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ðð/˜ð /¨ð /°ð /ð /ð /ð /ð/ ð /¨sð /°sð /ð /ð /ð /ð˜Sð ¨Cð °Dð ð ð ð ð Cð °3ð ¸4ð ð ð ð ð
 cð 
°Sð 
¸Tð 
ð 
ð 
ð 
ð¨ð ¸ð Àð ð ð ð ð°Sð ÀCð ÈDð ð ð ð ð, ð  $ð  ¨3ð  ð  ð  ñ „\ð ð  ð  r   r   )Útypingr   r   r   rB   r;   Úlangchain_core.utilsr   Úpydanticr   r	   r
   r   r0   r   r   ú<module>ro      s£   ðØ &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à €€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ðAð Að Að Að A˜)ñ Aô Að Að Að Ar   