
    dhy                        S SK Jr  S SKJrJrJrJrJr  S SKrS SK	J
r
  S SKJr  S SKJrJr  S SKJrJrJrJr  \
" SS	S
S9 " S S\\5      5       rg)    )annotations)AnyDictListOptionalcastN)
deprecated)
Embeddingsconvert_to_secret_strget_from_dict_or_env)	BaseModel
ConfigDict	SecretStrmodel_validatorz0.3.4z1.0.0z$langchain_community.ClovaXEmbeddings)sinceremovalalternative_importc                      \ rS rSr% SrSrS\S'    SrS\S'    SrS	\S
'    Sr	S	\S'    Sr
S	\S'    \" SS9r\" SS9\SS j5       5       rSS jrSS jrSS jrSrg)ClovaEmbeddings   a  
Clova's embedding service.

To use this service,

you should have the following environment variables
set with your API tokens and application ID,
or pass them as named parameters to the constructor:

- ``CLOVA_EMB_API_KEY``: API key for accessing Clova's embedding service.
- ``CLOVA_EMB_APIGW_API_KEY``: API gateway key for enhanced security.
- ``CLOVA_EMB_APP_ID``: Application ID for identifying your application.

Example:
    .. code-block:: python

        from langchain_community.embeddings import ClovaEmbeddings
        embeddings = ClovaEmbeddings(
            clova_emb_api_key='your_clova_emb_api_key',
            clova_emb_apigw_api_key='your_clova_emb_apigw_api_key',
            app_id='your_app_id'
        )

        query_text = "This is a test query."
        query_result = embeddings.embed_query(query_text)

        document_text = "This is a test document."
        document_result = embeddings.embed_documents([document_text])

zChttps://clovastudio.apigw.ntruss.com/testapp/v1/api-tools/embeddingstrendpoint_urlzclir-emb-dolphinmodelNzOptional[SecretStr]clova_emb_api_keyclova_emb_apigw_api_keyapp_idforbid)extrabefore)modec                    [        [        USS5      5      US'   [        [        USS5      5      US'   [        [        USS5      5      US'   U$ )z'Validate api key exists in environment.r   CLOVA_EMB_API_KEYr   CLOVA_EMB_APIGW_API_KEYr   CLOVA_EMB_APP_IDr   )clsvaluess     \/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/clova.pyvalidate_environment$ClovaEmbeddings.validate_environmentB   sk     '< )<>QR'
"# -B 13L-
()
 1 3EF
x     c                \    / nU H#  nUR                  U R                  U5      5        M%     U$ )z
Embed a list of texts and return their embeddings.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
)append_embed_text)selftexts
embeddingstexts       r(   embed_documentsClovaEmbeddings.embed_documentsS   s2     
Dd..t45 r+   c                $    U R                  U5      $ )z
Embed a single query text and return its embedding.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
)r.   )r/   r2   s     r(   embed_queryClovaEmbeddings.embed_queryb   s     %%r+   c                   SU0n[        [        U R                  5      R                  5       [        [        U R                  5      R                  5       SS.n[        [        U R
                  5      R                  5       n[        R                  " U R                   SU R                   SU 3UUS9nUR                  S:X  a'  UR                  5       nSU;   a  SUS   ;   a  US   S   $ [        S	UR                   S
UR                   35      e)zD
Internal method to call the embedding API and handle the response.
r2   zapplication/json)zX-NCP-CLOVASTUDIO-API-KEYzX-NCP-APIGW-API-KEYzContent-Type/)headersjson   result	embeddingzAPI request failed with status z: )r   r   r   get_secret_valuer   r   requestspostr   r   status_coder;   
ValueErrorr2   )r/   r2   payloadr:   r   responseresponse_datas          r(   r.   ClovaEmbeddings._embed_textn   s    4. *.411* #'477$ .
 i->>@==  !4::,ax8
 3&$MMOM=([M(<S-S$X.{;;-h.B.B-C2hmm_U
 	
r+    )r'   r   returnr   )r0   z	List[str]rI   zList[List[float]])r2   r   rI   zList[float])__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r   r   model_configr   classmethodr)   r3   r6   r.   __static_attributes__rH   r+   r(   r   r      s    @ 	N #  #E3#&-1*1:37070"&F&:L (#  $
& 
r+   r   )
__future__r   typingr   r   r   r   r   r@   langchain_core._api.deprecationr	   langchain_core.embeddingsr
   langchain_core.utilsr   r   pydanticr   r   r   r   r   rH   r+   r(   <module>rY      sN    " 2 2  6 0 L F F 
=
}
i }

}
r+   