
    dh                     f    S r SSKJrJrJrJr  SSKrSSKJrJ	r	  SSK
JrJrJrJr   " S S\5      rg)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                       \ rS 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rg)GoogleLensAPIWrapper
   a&  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    [        [        USS5      5      US'   U$ )z?Validate that api key and python package exists in environment.r   SERPAPI_API_KEYr   )clsr   s     a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/google_lens.pyvalidate_environment)GoogleLensAPIWrapper.validate_environment%   s'     "7 9JK"
~     queryc                 r   [        [        U R                  5      nSUR                  5       US.nSUS    SUS    SUS    3n[        R
                  " U5      nUR                  S	:w  a  g
UR                  5       nUS   S   S:w  a  g
SnSU;   a8  [        US   5      S:  a&  US   S   nUSUS    SUS    S3-  nUSUS    S3-  nUS-  nUS    H-  n	USU	S    S3-  nUSU	S    SU	S    S3-  nUS U	S!    S3-  nM/     S"U;   a  US#S$US"   S    S3-   -  n[        U5        U/n
SR                  U
5      $ )%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   runGoogleLensAPIWrapper.run/   s   y$*;*;< $&779

 8x8H7ISYZcSdReejkqrwkxjyz<<)3&. *+H5B..M"3459#$56q9GHWW-.a
0C/DCHHB$WV_$5T::B
##"#34EGE'N+2..BGE(O,CfbAABGE+./t44B 5 "]2&=)?@HILMB 	b	t{{4  r    )__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r   model_configr   classmethodr   r   strrG   __static_attributes__rI   r   r   r   r   
   sr    & #"(,L(9%,L (#$ 3   $*! *! *!r   r   )rN   typingr   r   r   r   r6   langchain_core.utilsr   r	   pydanticr
   r   r   r   r   rI   r   r   <module>rW      s(    ) , ,  L F FO!9 O!r   