
    dh*                         S SK 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Jr  S SKJrJrJrJrJrJr  S SKJr  SrSr\ R0                  " \5      rS	\R6                  S
S4S jrS	\R6                  S
S4S jr " S S\\	5      rg)    N)AnyDictListOptionalcast)
Embeddings)convert_to_secret_strget_from_env)AliasChoices	BaseModel
ConfigDictField	SecretStrmodel_validator)Selfz$https://clovastudio.apigw.ntruss.comz%https://clovastudio.stream.ntruss.comresponsereturnc                    [         R                  R                  U R                  5      (       a\  U R	                  5       R                  S5      n[         R                  " SU R                   SU R                   SU 3U R                  U S9eg)+Raise an error if the response is an error.utf-8Error response  while fetching : requestr   N)	httpxcodesis_errorstatus_codereaddecodeHTTPStatusErrorurlr   r   error_messages     \/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/naver.py_raise_on_errorr'      s~    {{H0011 ..w7##h223 4&ll^2m_>$$	
 	
 2    c                 4  #    [         R                  R                  U R                  5      (       ad  U R	                  5       I Sh  vN R                  S5      n[         R                  " SU R                   SU R                   SU 3U R                  U S9eg NQ7f)r   Nr   r   r   r   r   )	r   r   r   r   areadr!   r"   r#   r   r$   s     r&   _araise_on_errorr+   #   s     {{H0011'~~//77@##h223 4&ll^2m_>$$	
 	
 2/s   ABBABc                      \ rS rSr% Sr\" SS9r\\R                     \
S'   \" SS9r\\R                     \
S'   \" SSS9r\\   \
S	'    \" SS
S9r\\   \
S'    \" SSS9r\\   \
S'    \" SS9r\\   \
S'   \" SSS9r\\
S'   \" S\" SS5      SS9r\\
S'   \" SSS9r\\
S'   \" SSS9r\S\\\4   4S j5       r\S\4S  j5       r\" S!S"9S\ 4S# j5       r!S\4S$ jr"S1S% jr#S1S& jr$S\\\%4   4S' jr&S(\S\'\(   4S) jr)S(\S\'\(   4S* jr*S+\'\   S\'\'\(      4S, jr+S(\S\'\(   4S- jr,S+\'\   S\'\'\(      4S. jr-S(\S\'\(   4S/ jr.S0r/g)2ClovaXEmbeddings/   a  `NCP ClovaStudio` Embedding API.

following environment variables set or passed in constructor in lower case:
- ``NCP_CLOVASTUDIO_API_KEY``
- ``NCP_APIGW_API_KEY``
- ``NCP_CLOVASTUDIO_APP_ID``

Example:
    .. code-block:: python

        from langchain_community import ClovaXEmbeddings

        model = ClovaXEmbeddings(model="clir-emb-dolphin")
        output = embedding.embed_documents(documents)
N)defaultclientasync_clientapi_key)r/   aliasncp_clovastudio_api_keyapigw_api_keyncp_apigw_api_keybase_urlapp_idFz=false: use testapp, true: use service app on NCP Clova Studio)r/   descriptionservice_appzclir-emb-dolphin
model_namemodelz$NCP ClovaStudio embedding model name)r/   validation_aliasr9   r   <   )gtr/   timeoutT )arbitrary_types_allowedprotected_namespacesr   c                 >    U R                  5       (       d  SS0$ SSS.$ )Nr4   NCP_CLOVASTUDIO_API_KEYNCP_APIGW_API_KEY)r4   r6   )_is_new_api_keyselfs    r&   
lc_secretsClovaXEmbeddings.lc_secrets]   s4    ##%%)+D 
 ,E%8 r(   c                     U R                   (       a  SOSnU R                  S:w  a  U R                  OSnU R                  5       (       a  U R                   SU SU 3$ U R                   SU SU SU R                   3$ )zGET embedding api url
serviceapptestappzbge-m3v2/z/v1/api-tools/embedding/)r:   r;   rG   r7   r8   )rI   app_typer;   s      r&   _api_urlClovaXEmbeddings._api_urli   s     $(#3#3<(,8(CT__
!!mm_AhZ/G
|TT ==/8**:,a}Fr(   after)modec                 Z   U R                   (       d  [        [        SS5      5      U l         U R                  5       (       a  U R	                  5         OU R                  5         U R                  (       d  [        S5      eU R                  (       d=  [        R                  " U R                  U R                  5       U R                  S9U l        U R                  (       dN  U R                  (       a=  [        R                  " U R                  U R                  5       U R                  S9U l        U $ )Nr4   rE   zbase_url dose not exist.)r7   headersr@   )r4   r	   r
   rG   _init_fields_on_new_api_key_init_fields_on_old_api_keyr7   
ValueErrorr0   r   Clientdefault_headersr@   r1   AsyncClientrH   s    r&   validate_model_after%ClovaXEmbeddings.validate_model_afterv   s    +++@68QR,D( !!,,.,,.}}788{{,,,,.DK   T]] % 1 1,,.!D r(   c                 x    U R                   (       a)  U R                   R                  5       R                  S5      $ g)Nznv-F)r4   get_secret_value
startswithrH   s    r&   rG    ClovaXEmbeddings._is_new_api_key   s.    ''//@@BMMeTTr(   c                 T    U R                   (       d  [        SS[        5      U l         g g )Nr7   NCP_CLOVASTUDIO_API_BASE_URL)r7   r
    _DEFAULT_BASE_URL_ON_NEW_API_KEYrH   s    r&   rX   ,ClovaXEmbeddings._init_fields_on_new_api_key   s#    }}(.0DM r(   c                     U R                   (       d  [        [        SSS5      5      U l         U R                  (       d  [        SS[        5      U l        U R
                  (       d  [        SS5      U l        g g )Nr6   rF    r7   re   r8   NCP_CLOVASTUDIO_APP_ID)r6   r	   r
   r7   _DEFAULT_BASE_URLr8   rH   s    r&   rY   ,ClovaXEmbeddings._init_fields_on_old_api_key   sa    %%%:02ErJ&D" }}(:<MDM {{&x1IJDK r(   c                 .   SSS.nU R                   (       a  U R                   R                  5       OS nU R                  5       (       a
  SU 3US'   U$ U(       a  X!S'   U R                  (       a  U R                  R                  5       OS nU(       a  X1S'   U$ )Nzapplication/json)zContent-TypeAcceptzBearer AuthorizationzX-NCP-CLOVASTUDIO-API-KEYzX-NCP-APIGW-API-KEY)r4   ra   rG   r6   )rI   rW   clovastudio_api_keyr5   s       r&   r\    ClovaXEmbeddings.default_headers   s    .(
 ++ ((99; 	 !!)01D0E'FGO$  #7J34 )) &&779 
 1>-.r(   textc                     SU0n[        [        R                  U R                  5      nUR	                  U R
                  US9n[        U5        UR                  5       S   S   $ Nrr   )r#   jsonresult	embedding)r   r   r[   r0   postrR   r'   ru   )rI   rr   payloadr0   r   s        r&   _embed_textClovaXEmbeddings._embed_text   sS    4.ellDKK0;;4==w;?!}}x(55r(   c                    #    SU0n[        [        R                  U R                  5      nUR	                  U R
                  US9I S h  vN n[        U5      I S h  vN   UR                  5       S   S   $  N- N7frt   )r   r   r]   r1   rx   rR   r+   ru   )rI   rr   ry   r1   r   s        r&   _aembed_textClovaXEmbeddings._aembed_text   so     4.E--t/@/@A%**t}}7*KKx(((}}x(55 L(s$   AA:A6	A:A8A:8A:textsc                 \    / nU H#  nUR                  U R                  U5      5        M%     U$ N)appendrz   )rI   r   
embeddingsrr   s       r&   embed_documents ClovaXEmbeddings.embed_documents   s0    
Dd..t45 r(   c                 $    U R                  U5      $ r   )rz   rI   rr   s     r&   embed_queryClovaXEmbeddings.embed_query   s    %%r(   c                 |   #    / nU H-  nU R                  U5      I S h  vN nUR                  U5        M/     U$  N7fr   )r}   r   )rI   r   r   rr   rw   s        r&   aembed_documents!ClovaXEmbeddings.aembed_documents   sB     
D"//55Ii(   6s   <:<c                 @   #    U R                  U5      I S h  vN $  N7fr   )r}   r   s     r&   aembed_queryClovaXEmbeddings.aembed_query   s     &&t,,,,s   )r8   r1   r7   r0   r6   r4   )r   N)0__name__
__module____qualname____firstlineno____doc__r   r0   r   r   r[   __annotations__r1   r]   r4   r   r6   r7   strr8   r:   boolr   r;   r@   intr   model_configpropertyr   rJ   rR   r   r   r^   rG   rX   rY   r   r\   r   floatrz   r}   r   r   r   r   __static_attributes__rA   r(   r&   r-   r-   /   s     &+4%8FHU\\"805d0CL(5,,-C38Y3WXi0WX-24-Wx	*WR#D
CHhsmC "$/FHSM/SK  "%lG<:J  Ar*GS*dQSTL	DcN 	 	 
# 
 
 '"d  #< 
Kc3h <6 6U 66s 6tE{ 6T#Y 4U3D & &U &DI $tE{:K -s -tE{ -r(   r-   )loggingtypingr   r   r   r   r   r   langchain_core.embeddingsr   langchain_core.utilsr	   r
   pydanticr   r   r   r   r   r   typing_extensionsr   rk   rf   	getLoggerr   loggerResponser'   r+   r-   rA   r(   r&   <module>r      s     2 2  0 D  #: #J  			8	$	
enn 	
 	
	
U^^ 	
 	
}-y* }-r(   