§
    æ˜ºh+  ã                   ón   — d Z ddlmZmZmZmZ ddlZddlmZm	Z	m
Z
mZ ddlmZmZ  G d„ de¦  «        ZdS )z#Util that calls Google Lens Search.é    )ÚAnyÚDictÚOptionalÚcastN)Ú	BaseModelÚExtraÚ	SecretStrÚroot_validator©Úconvert_to_secret_strÚget_from_dict_or_envc                   ó’   — e Zd ZU dZeed<   dZee         ed<    G d„ d¦  «        Z	 e
¦   «         dedefd	„¦   «         Zd
edefd„ZdS )ÚGoogleLensAPIWrapperaV  Wrapper for SerpApi's Google Lens API

    You can create SerpApi.com key by signing up at: https://serpapi.com/users/sign_up.

    The wrapper uses the SerpApi.com python package:
    https://serpapi.com/integrations/python

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

     Example:
        .. code-block:: python

        from langchain_community.utilities import GoogleLensAPIWrapper
        google_lens = GoogleLensAPIWrapper()
        google_lens.run('langchain')
    Úserp_search_engineNÚserp_api_keyc                   ó    — e Zd ZdZej        ZdS )úGoogleLensAPIWrapper.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚforbidÚextra© ó    úq/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/utilities/google_lens.pyÚConfigr       s   € € € € € Ø5Ð5à”ˆˆˆr   r   ÚvaluesÚreturnc                 óH   — t          t          |dd¦  «        ¦  «        |d<   |S )z?Validate that api key and python package exists in environment.r   ÚSERPAPI_API_KEYr   )Úclsr   s     r   Úvalidate_environmentz)GoogleLensAPIWrapper.validate_environment%   s/   € õ "7Ý  ¨Ð9JÑKÔKñ"
ô "
ˆˆ~Ñð ˆr   Úqueryc                 óÜ  — t          t          | j        ¦  «        }d|                     ¦   «         |dœ}d|d         › d|d         › d|d         › �}t	          j        |¦  «        }|j        d	k    rd
S |                     ¦   «         }|d         d         dk    rd
S d}t          |d         ¦  «        dk    r5|d         d         }|d|d         › d|d         › d�z  }|d|d         › d�z  }|dz  }|d         D ]8}	|d|	d         › d�z  }|d|	d         › d|	d         › d�z  }|d |	d!         › d�z  }Œ9|d"d#|d$         d         › d�z   z  }t          |¦  «         |g}
d 
                    |
¦  «        S )%z,Run query through Google Trends with SerpapiÚgoogle_lens)ÚengineÚapi_keyÚurlz"https://serpapi.com/search?engine=r'   z	&api_key=r(   z&url=r)   éÈ   zGoogle Lens search failedÚsearch_metadataÚstatusÚSuccessÚ Úknowledge_graphr   zSubject:Útitleú(Úsubtitlez)
zLink to subject:Úlinkz

zRelated Images:

Úvisual_matcheszTitle: ú
zSource(Úsourcez): zImage: Ú	thumbnailzReverse Image SearchzLink: Úreverse_image_search)r   r	   r   Úget_secret_valueÚrequestsÚgetÚstatus_codeÚjsonÚlenÚprintÚjoin)Úselfr$   Úserpapi_api_keyÚparamsÚqueryURLÚresponseÚresponseValueÚxsÚsubjectÚimageÚdocss              r   ÚrunzGoogleLensAPIWrapper.run.   sõ  € å�y¨$Ô*;Ñ<Ô<ˆð $Ø&×7Ò7Ñ9Ô9Øð
ð 
ˆð
 {¸¸xÔ8HÐzÐzÐSYÐZcÔSdÐzÐzÐkqÐrwÔkxÐzÐzˆÝ”< Ñ)Ô)ˆàÔ 3Ò&Ð&Ø.Ð.à Ÿš™œˆàÐ*Ô+¨HÔ5¸ÒBÐBØ.Ð.àˆÝˆ}Ð.Ô/Ñ0Ô0°1Ò4Ð4Ø#Ð$5Ô6°qÔ9ˆGØÐH˜W WÔ-ÐHÐH°¸
Ô0CÐHÐHÐHÑHˆBØÐ: W¨V¤_Ð:Ð:Ð:Ñ:ˆBØ
Ð#Ñ#ˆØ"Ð#3Ô4ð 	5ð 	5ˆEØÐ.˜E 'œNÐ.Ð.Ð.Ñ.ˆBØÐA˜E (œOÐAÐA°°f´ÐAÐAÐAÑAˆBØÐ4˜E +Ô.Ð4Ð4Ð4Ñ4ˆBˆBØ
Ø"ØH�}Ð%;Ô<¸VÔDÐHÐHÐHñIñ	
ˆõ 	ˆb‰	Œ	ˆ	àˆtˆà�{Š{˜4Ñ Ô Ð r   )r   r   r   r   r   Ú__annotations__r   r   r	   r   r
   r   r#   ÚstrrK   r   r   r   r   r   	   sÄ   € € € € € € ðð ð& ÐÐÑØ(,€L�(˜9Ô%Ð,Ð,Ñ,ðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð&!˜ð &! ð &!ð &!ð &!ð &!ð &!ð &!r   r   )r   Útypingr   r   r   r   r:   Úlangchain_core.pydantic_v1r   r   r	   r
   Úlangchain_core.utilsr   r   r   r   r   r   ú<module>rQ      s²   ðØ )Ð )Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à €€€Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LðK!ð K!ð K!ð K!ð K!˜9ñ K!ô K!ð K!ð K!ð K!r   