§
    šŠtj   ã                   óô   — d dl Z d dlmZmZmZmZmZ d dlZd dlm	Z	 d dl
mZmZ d dlmZmZmZmZmZmZ d dlmZ dZdZ e j        e¦  «        Zd	ej        d
dfd„Zd	ej        d
dfd„Z G d„ dee	¦  «        ZdS )é    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                 óú   — t           j                             | j        ¦  «        rV|                      ¦   «                              d¦  «        }t          j        d| j        › d| j        › d|› �| j        | ¬¦  «        ‚dS )ú+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     úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/naver.pyÚ_raise_on_errorr'      s•   € å„{×Ò˜HÔ0Ñ1Ô1ð 
Ø Ÿš™œ×.Ò.¨wÑ7Ô7ˆÝÔ#ð>˜hÔ2ð >ð >Ø&œlð>ð >Ø.;ð>ð >àÔ$Øð	
ñ 
ô 
ð 	
ð
ð 
ó    c              ƒ   ó
  K  — t           j                             | j        ¦  «        r\|                      ¦   «         ƒ d{V —†                     d¦  «        }t          j        d| j        › d| j        › d|› �| j        | ¬¦  «        ‚dS )r   Nr   r   r   r   r   )	r   r   r   r   Úareadr!   r"   r#   r   r$   s     r&   Ú_araise_on_errorr+   #   s­   è è € å„{×Ò˜HÔ0Ñ1Ô1ð 
Ø'Ÿ~š~Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/×7Ò7¸Ñ@Ô@ˆÝÔ#ð>˜hÔ2ð >ð >Ø&œlð>ð >Ø.;ð>ð >àÔ$Øð	
ñ 
ô 
ð 	
ð
ð 
r(   c                   ól  — e Zd ZU dZ ed¬¦  «        Zeej                 e	d<    ed¬¦  «        Z
eej                 e	d<    edd¬¦  «        Zee         e	d<   	  edd	¬¦  «        Zee         e	d
<   	  edd¬¦  «        Zee         e	d<   	  ed¬¦  «        Zee         e	d<    edd¬¦  «        Zee	d<    ed edd¦  «        d¬¦  «        Zee	d<    edd¬¦  «        Zee	d<    edd¬¦  «        Zedeeef         fd„¦   «         Zedefd„¦   «         Z ed ¬!¦  «        defd"„¦   «         Z defd#„Z!d/d$„Z"d/d%„Z#deee$f         fd&„Z%d'ede&e'         fd(„Z(d'ede&e'         fd)„Z)d*e&e         de&e&e'                  fd+„Z*d'ede&e'         fd,„Z+d*e&e         de&e&e'                  fd-„Z,d'ede&e'         fd.„Z-dS )0ÚClovaXEmbeddingsaº  `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_aliasr8   r   é<   )Úgtr.   ÚtimeoutT© )Úarbitrary_types_allowedÚprotected_namespacesr   c                 ó<   — |                       ¦   «         sddiS dddœS )Nr3   ÚNCP_CLOVASTUDIO_API_KEYÚNCP_APIGW_API_KEY)r3   r5   )Ú_is_new_api_key©Úselfs    r&   Ú
lc_secretszClovaXEmbeddings.lc_secrets]   s>   € à×#Ò#Ñ%Ô%ð 	à)Ð+Dðð ð
 ,EØ%8ðð ð r(   c                 ó´   — | j         rdnd}| j        dk    r| j        nd}|                      ¦   «         r| j        › d|› d|› �S | j        › d|› d|› d| j        › �S )zGET embedding api urlÚ
serviceappÚtestappzbge-m3Úv2ú/z/v1/api-tools/embedding/)r9   r:   rF   r6   r7   )rH   Úapp_typer:   s      r&   Ú_api_urlzClovaXEmbeddings._api_urli   s¤   € ð $(Ô#3ÐB�<�<¸ˆØ(,¬¸8Ò(CÐ(C�T”_�_Èˆ
Ø×ÒÑ!Ô!ð 	Ø”mÐTÐT hÐTÐTÈ
ÐTÐTÐTð ”=ð Fð F 8ð Fð FØ+5ðFð FØ8<¼ðFð Fðr(   Úafter)Úmodec                 ó  — | j         s"t          t          dd¦  «        ¦  «        | _         |                      ¦   «         r|                      ¦   «          n|                      ¦   «          | j        st          d¦  «        ‚| j        s8t          j
        | j        |                      ¦   «         | j        ¬¦  «        | _        | j        s?| j        r8t          j        | j        |                      ¦   «         | j        ¬¦  «        | _        | S )Nr3   rD   zbase_url dose not exist.)r6   Úheadersr?   )r3   r	   r
   rF   Ú_init_fields_on_new_api_keyÚ_init_fields_on_old_api_keyr6   Ú
ValueErrorr/   r   ÚClientÚdefault_headersr?   r0   ÚAsyncClientrG   s    r&   Úvalidate_model_afterz%ClovaXEmbeddings.validate_model_afterv   s  € àÔ+ð 	Ý+@ÝÐ6Ð8QÑRÔRñ,ô ,ˆDÔ(ð ×ÒÑ!Ô!ð 	/Ø×,Ò,Ñ.Ô.Ð.Ð.à×,Ò,Ñ.Ô.Ð.àŒ}ð 	9ÝÐ7Ñ8Ô8Ð8àŒ{ð 	Ýœ,ØœØ×,Ò,Ñ.Ô.Øœðñ ô ˆDŒKð Ô ð 	 T¤]ð 	Ý %Ô 1ØœØ×,Ò,Ñ.Ô.Øœð!ñ !ô !ˆDÔð ˆr(   c                 ól   — | j         r,| j                              ¦   «                              d¦  «        S dS )Nznv-F)r3   Úget_secret_valueÚ
startswithrG   s    r&   rF   z ClovaXEmbeddings._is_new_api_key•   s5   € ØÔ'ð 	ØÔ/×@Ò@ÑBÔB×MÒMÈeÑTÔTÐTà�5r(   c                 óN   — | j         st          ddt          ¦  «        | _         d S d S )Nr6   ÚNCP_CLOVASTUDIO_API_BASE_URL)r6   r
   Ú _DEFAULT_BASE_URL_ON_NEW_API_KEYrG   s    r&   rU   z,ClovaXEmbeddings._init_fields_on_new_api_key›   s4   € ØŒ}ð 	Ý(ØØ.Ý0ñô ˆDŒMˆMˆMð	ð 	r(   c                 óÚ   — | j         s#t          t          ddd¦  «        ¦  «        | _         | j        st          ddt          ¦  «        | _        | j        st          dd¦  «        | _        d S d S )Nr5   rE   Ú r6   r`   r7   ÚNCP_CLOVASTUDIO_APP_ID)r5   r	   r
   r6   Ú_DEFAULT_BASE_URLr7   rG   s    r&   rV   z,ClovaXEmbeddings._init_fields_on_old_api_key£   s…   € ØÔ%ð 	Ý%:ÝÐ0Ð2EÀrÑJÔJñ&ô &ˆDÔ"ð Œ}ð 	Ý(ØÐ:Õ<Mñô ˆDŒMð Œ{ð 	KÝ& xÐ1IÑJÔJˆDŒKˆKˆKð	Kð 	Kr(   c                 óî   — dddœ}| j         r| j                              ¦   «         nd }|                      ¦   «         r	d|› �|d<   n0|r||d<   | j        r| j                             ¦   «         nd }|r||d<   |S )Nzapplication/json)zContent-TypeÚAcceptzBearer ÚAuthorizationzX-NCP-CLOVASTUDIO-API-KEYzX-NCP-APIGW-API-KEY)r3   r]   rF   r5   )rH   rT   Úclovastudio_api_keyr4   s       r&   rY   z ClovaXEmbeddings.default_headers¯   sÂ   € à.Ø(ð
ð 
ˆð Ô+ðˆDÔ(×9Ò9Ñ;Ô;Ð;àð 	ð ×ÒÑ!Ô!ð 	?à'FÐ1DÐ'FÐ'FˆG�OÑ$Ð$ð #ð KØ7J�Ð3Ñ4ð Ô)ð�Ô&×7Ò7Ñ9Ô9Ð9àð ð
 ð ?Ø1>�Ð-Ñ.àˆr(   Útextc                 óÞ   — d|i}t          t          j        | j        ¦  «        }|                     | j        |¬¦  «        }t          |¦  «         |                     ¦   «         d         d         S ©Nrj   )r#   ÚjsonÚresultÚ	embedding)r   r   rX   r/   ÚpostrP   r'   rm   )rH   rj   Úpayloadr/   r   s        r&   Ú_embed_textzClovaXEmbeddings._embed_textÍ   s[   € Ø˜4�.ˆÝ•e”l D¤KÑ0Ô0ˆØ—;’; 4¤=°w�;Ñ?Ô?ˆÝ˜Ñ!Ô!Ð!Ø�}Š}‰Œ˜xÔ(¨Ô5Ð5r(   c              ƒ   óú   K  — d|i}t          t          j        | j        ¦  «        }|                     | j        |¬¦  «        ƒ d {V —†}t          |¦  «        ƒ d {V —† |                     ¦   «         d         d         S rl   )r   r   rZ   r0   rp   rP   r+   rm   )rH   rj   rq   r0   r   s        r&   Ú_aembed_textzClovaXEmbeddings._aembed_textÔ   sˆ   è è € Ø˜4�.ˆÝ�EÔ-¨tÔ/@ÑAÔAˆØ%×*Ò*¨t¬}À7Ð*ÑKÔKÐKÐKÐKÐKÐKÐKˆÝ˜xÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�}Š}‰Œ˜xÔ(¨Ô5Ð5r(   Útextsc                 ód   — g }|D ]*}|                      |                      |¦  «        ¦  «         Œ+|S ©N)Úappendrr   )rH   ru   Ú
embeddingsrj   s       r&   Úembed_documentsz ClovaXEmbeddings.embed_documentsÛ   sA   € Øˆ
Øð 	6ð 	6ˆDØ×Ò˜d×.Ò.¨tÑ4Ô4Ñ5Ô5Ð5Ð5ØÐr(   c                 ó,   — |                       |¦  «        S rw   )rr   ©rH   rj   s     r&   Úembed_queryzClovaXEmbeddings.embed_queryá   s   € Ø×Ò Ñ%Ô%Ð%r(   c              ƒ   óx   K  — g }|D ]2}|                       |¦  «        ƒ d {V —†}|                     |¦  «         Œ3|S rw   )rt   rx   )rH   ru   ry   rj   ro   s        r&   Úaembed_documentsz!ClovaXEmbeddings.aembed_documentsä   s\   è è € Øˆ
Øð 	)ð 	)ˆDØ"×/Ò/°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆIØ×Ò˜iÑ(Ô(Ð(Ð(ØÐr(   c              ƒ   ó<   K  — |                       |¦  «        ƒ d {V —†S rw   )rt   r|   s     r&   Úaembed_queryzClovaXEmbeddings.aembed_queryë   s,   è è € Ø×&Ò& tÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r(   )r   N).Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r/   r   r   rX   Ú__annotations__r0   rZ   r3   r   r5   r6   Ústrr7   r9   Úboolr   r:   r?   Úintr   Úmodel_configÚpropertyr   rI   rP   r   r   r[   rF   rU   rV   r   rY   r   Úfloatrr   rt   rz   r}   r   r�   r@   r(   r&   r-   r-   /   s�  € € € € € € ðð ð  &+ U°4Ð%8Ñ%8Ô%8€FˆH�U”\Ô"Ð8Ð8Ñ8Ø05°¸dÐ0CÑ0CÔ0C€L�(˜5Ô,Ô-ÐCÐCÑCà38°5ÀÈYÐ3WÑ3WÔ3WÐ˜X iÔ0ÐWÐWÑWØXà-2¨U¸4ÀÐ-WÑ-WÔ-WÐ�x 	Ô*ÐWÐWÑWØRà#˜e¨D¸
ÐCÑCÔC€Hˆh�sŒmÐCÐCÑCðð "˜E¨$Ð/Ñ/Ô/€FˆH�SŒMÐ/Ð/Ñ/Ø˜ØØSðñ ô €K�ð ð ñ ð �eØ"Ø%˜ l°GÑ<Ô<Ø:ðñ ô €J�ð ð ñ ð �5˜A rÐ*Ñ*Ô*€GˆSÐ*Ð*Ñ*à�:°dÐQSÐTÑTÔT€Làð	˜D  c œNð 	ð 	ð 	ñ „Xð	ð ð
˜#ð 
ð 
ð 
ñ „Xð
ð €_˜'Ð"Ñ"Ô"ð dð ð ð ñ #Ô"ðð< ð ð ð ð ðð ð ð ð
Kð 
Kð 
Kð 
Kð  c¨3 h¤ð ð ð ð ð<6 ð 6¨¨U¬ð 6ð 6ð 6ð 6ð6 sð 6¨t°E¬{ð 6ð 6ð 6ð 6ð T¨#¤Yð °4¸¸U¼Ô3Dð ð ð ð ð& ð &¨¨U¬ð &ð &ð &ð &ð¨D°¬Ið ¸$¸tÀE¼{Ô:Kð ð ð ð ð- sð -¨t°E¬{ð -ð -ð -ð -ð -ð -r(   r-   )ÚloggingÚtypingr   r   r   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   r
   Úpydanticr   r   r   r   r   r   Útyping_extensionsr   re   ra   Ú	getLoggerr‚   ÚloggerÚResponser'   r+   r-   r@   r(   r&   ú<module>r–      su  ðØ €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "à:Ð Ø#JÐ  à	ˆÔ	˜8Ñ	$Ô	$€ð	
˜eœnð 	
°ð 	
ð 	
ð 	
ð 	
ð	
 U¤^ð 	
¸ð 	
ð 	
ð 	
ð 	
ð}-ð }-ð }-ð }-ð }-�y *ñ }-ô }-ð }-ð }-ð }-r(   