
    Ng                     b    d Z ddlmZmZ ddlZddlmZmZ ddlm	Z	m
Z
mZ  G d de	          ZdS )a&  Util that calls SceneXplain.

In order to set this up, you need API key for the SceneXplain API.
You can obtain a key by following the steps below.
- Sign up for a free account at https://scenex.jina.ai/.
- Navigate to the API Access page (https://scenex.jina.ai/api) and create a new API key.
    )AnyDictN)from_envget_from_dict_or_env)	BaseModelFieldmodel_validatorc                       e Zd ZU dZ ed ed                    Zeed<   dZ	eed<   ded	efd
Z
 ed          eded	efd                        Zded	efdZdS )SceneXplainAPIWrappera@  Wrapper for SceneXplain API.

    In order to set this up, you need API key for the SceneXplain API.
    You can obtain a key by following the steps below.
    - Sign up for a free account at https://scenex.jina.ai/.
    - Navigate to the API Access page (https://scenex.jina.ai/api)
      and create a new API key.
    .SCENEX_API_KEY)default_factoryscenex_api_keyz&https://api.scenex.jina.ai/v1/describescenex_api_urlimagereturnc                 $   d| j          dd}d|ddgdgi}t          j        | j        ||          }|                                 |                                                    d	g           }|r|d
         ni }|                    dd          S )Nztoken zapplication/json)z	x-api-keyzcontent-typedataEmberen)r   	algorithm	languages)headersjsonresultr   text )r   requestspostr   raise_for_statusr   get)selfr   r   payloadresponser   imgs          e/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/scenexplain.py_describe_imagez%SceneXplainAPIWrapper._describe_image   s    7$"577.
 

 "!("& 
 =!4gGTTT!!###$$Xr22!)fQiirwwvr"""    before)modevaluesc                 2    t          |dd          }||d<   |S )z,Validate that api key exists in environment.r   r   )r   )clsr*   r   s      r%   validate_environmentz*SceneXplainAPIWrapper.validate_environment2   s.     .$&6
 
 $2 r'   c                 8    |                      |          }|sdS |S )z Run SceneXplain image explainer.zNo description found.)r&   )r!   r   descriptions      r%   runzSceneXplainAPIWrapper.run=   s)    **511 	+**r'   N)__name__
__module____qualname____doc__r   r   r   str__annotations__r   r&   r	   classmethodr   r   r-   r0    r'   r%   r   r      s            %XX>N5O5OPPPNCPPPBNCBBB#S #S # # # #* _(###$ 3    [ $#       r'   r   )r4   typingr   r   r   langchain_core.utilsr   r   pydanticr   r   r	   r   r8   r'   r%   <module>r<      s              ? ? ? ? ? ? ? ? 6 6 6 6 6 6 6 6 6 63 3 3 3 3I 3 3 3 3 3r'   