Ë
    µŒj¹  ã                   óf   — d Z ddlmZmZmZmZ ddlZddlmZm	Z	 ddl
mZmZmZmZ  G d„ de«      Zy)z#Util that calls Google Lens Search.é    )ÚAnyÚDictÚOptionalÚcastN©Úconvert_to_secret_strÚget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚ	SecretStrÚmodel_validatorc                   óˆ   — e Zd ZU dZdZeed<   dZee	   ed<    e
d¬«      Z ed¬«      ed	ed
efd„«       «       Zded
efd„Zy)Ú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')
    NÚserp_search_engineÚserp_api_keyÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ó8   — t        t        |dd«      «      |d<   |S )z?Validate that api key and python package exists in environment.r   ÚSERPAPI_API_KEYr   )Úclsr   s     ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/utilities/google_lens.pyÚvalidate_environmentz)GoogleLensAPIWrapper.validate_environment%   s'   € ô "7Ü  ¨Ð9JÓKó"
ˆˆ~Ñð ˆó    Úqueryc                 ó^  — t        t        | j                  «      }d|j                  «       |dœ}d|d   › d|d   › d|d   › �}t	        j
                  |«      }|j                  d	k7  ry
|j                  «       }|d   d   dk7  ry
d}d|v r7t        |d   «      dkD  r&|d   d   }|d|d   › d|d   › d�z  }|d|d   › d�z  }|dz  }|d   D ],  }	|d|	d   › d�z  }|d|	d   › d|	d   › d�z  }|d |	d!   › d�z  }Œ. d"|v r|d#d$|d"   d   › d�z   z  }t        |«       |g}
dj                  |
«      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: Ú	thumbnailÚreverse_image_searchzReverse Image SearchzLink: )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Øñ
ˆð
 8¸¸xÑ8HÐ7IÈÐSYÐZcÑSdÐReÐejÐkqÐrwÑkxÐjyÐzˆÜ—<‘< Ó)ˆà×Ñ 3Ò&Ø.à Ÿ™›ˆàÐ*Ñ+¨HÑ5¸ÒBØ.àˆà Ñ.Ü�MÐ"3Ñ4Ó5¸Ò9à#Ð$5Ñ6°qÑ9ˆGØ�H˜W WÑ-Ð.¨a°¸
Ñ0CÐ/DÀCÐHÑHˆBØÐ$ W¨V¡_Ð$5°TÐ:Ñ:ˆBØ
Ð#Ñ#ˆØ"Ð#3Ô4ˆEØ�G˜E '™NÐ+¨2Ð.Ñ.ˆBØ�G˜E (™OÐ,¨C°°f±¨¸bÐAÑAˆBØ�G˜E +Ñ.Ð/¨tÐ4Ñ4‰Bð 5ð " ]Ñ2ØØ&Ø˜=Ð)?Ñ@ÀÑHÐIÈÐLñMñˆBô 	ˆbŒ	àˆtˆà�{‰{˜4Ó Ð r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   r   r   Úmodel_configr   Úclassmethodr   r   ÚstrrE   © r   r   r   r   
   sr   … ñð& #Ð˜Ó"Ø(,€L�(˜9Ñ%Ó,áØô€Lñ ˜(Ô#Øð¨$ð °3ò ó ó $ðð*!˜ð *! ô *!r   r   )rI   Útypingr   r   r   r   r4   Úlangchain_core.utilsr   r	   Úpydanticr
   r   r   r   r   rN   r   r   Ú<module>rR      s(   ðÙ )ç ,Ó ,ã ß Lß FÓ FôO!˜9õ O!r   