Ë
    µŒj*   ã                   ó  — 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 j0                  e«      Zd	ej6                  d
dfd„Zd	ej6                  d
dfd„Z G d„ dee	«      Zy)é    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                  | j                  «      r^| j	                  «       j                  d«      }t        j                  d| j                  › d| j                  › d|› �| j                  | ¬«      ‚y)ú+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     ún/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/naver.pyÚ_raise_on_errorr'      s{   € ä‡{�{×Ñ˜H×0Ñ0Ô1Ø Ÿ™›×.Ñ.¨wÓ7ˆÜ×#Ñ#Ø˜h×2Ñ2Ð3ð 4Ø&Ÿl™l˜^¨2¨m¨_ð>à×$Ñ$Øô	
ð 	
ð 2ó    c              ƒ   ó.  K  — t         j                  j                  | j                  «      rf| j	                  «       ƒ d{  –—† j                  d«      }t        j                  d| j                  › d| j                  › d|› �| j                  | ¬«      ‚y7 ŒS­w)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Ø'Ÿ~™~Ó/×/×7Ñ7¸Ó@ˆÜ×#Ñ#Ø˜h×2Ñ2Ð3ð 4Ø&Ÿl™l˜^¨2¨m¨_ð>à×$Ñ$Øô	
ð 	
ð 2Ø/ús   ‚=B¿BÁ ABc                   ó¸  — 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-y)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                 ó4   — | j                  «       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]   s1   € à×#Ñ#Ô%à)Ð+Dðð ð
 ,EØ%8ñð r(   c                 óæ   — | j                   rdnd}| j                  dk7  r| j                  nd}| j                  «       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Ò#3‘<¸ˆØ(,¯©¸8Ò(C�T—_’_Èˆ
Ø×ÑÔ!Ø—m‘m�_ A h ZÐ/GÈ
À|ÐTÐTð —=‘=�/  8 *Ø*¨:¨,°a¸¿¹°}ðFðr(   Úafter)Úmodec                 ó&  — | j                   st        t        dd«      «      | _         | j                  «       r| j	                  «        n| j                  «        | j                  st        d«      ‚| j                  s?t        j                  | j                  | j                  «       | j                  ¬«      | _        | j                  sK| j                  r?t        j                  | 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ó,ˆDÔ(ð ×ÑÔ!Ø×,Ñ,Õ.à×,Ñ,Ô.à�}Š}ÜÐ7Ó8Ð8à�{Š{ÜŸ,™,ØŸ™Ø×,Ñ,Ó.ØŸ™ôˆDŒKð × Ò  T§]¢]Ü %× 1Ñ 1ØŸ™Ø×,Ñ,Ó.ØŸ™ô!ˆDÔð ˆr(   c                 ón   — | j                   r)| j                   j                  «       j                  d«      S y)Nznv-F)r3   Úget_secret_valueÚ
startswithrG   s    r&   rF   z ClovaXEmbeddings._is_new_api_key•   s.   € Ø×'Ò'Ø×/Ñ/×@Ñ@ÓB×MÑMÈeÓTÐTàr(   c                 óJ   — | j                   st        ddt        «      | _         y y )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›   s#   € Ø�}Š}Ü(ØØ.Ü0óˆD�Mð r(   c                 óÒ   — | j                   st        t        ddd«      «      | _         | j                  st        ddt        «      | _        | j
                  st        dd«      | _        y y )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£   sa   € Ø×%Ò%Ü%:ÜÐ0Ð2EÀrÓJó&ˆDÔ"ð �}Š}Ü(ØÐ:Ô<MóˆDŒMð �{Š{Ü& xÐ1IÓJˆD�Kð r(   c                 ó   — dddœ}| j                   r| j                   j                  «       nd }| j                  «       r
d|› �|d<   |S |r||d<   | j                  r| j                  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ª   € à.Ø(ñ
ˆð ×+Ò+ð ×(Ñ(×9Ñ9Ô;àð 	ð ×ÑÔ!à)0Ð1DÐ0EÐ'FˆG�OÑ$ð ˆñ #Ø7J�Ð3Ñ4ð ×)Ò)ð ×&Ñ&×7Ñ7Ô9àð ñ
 Ø1>�Ð-Ñ.àˆr(   Útextc                 óÎ   — d|i}t        t        j                  | j                  «      }|j	                  | j
                  |¬«      }t        |«       |j                  «       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Í   sS   € Ø˜4�.ˆÜ”e—l‘l D§K¡KÓ0ˆØ—;‘; 4§=¡=°w�;Ó?ˆÜ˜Ô!Ø�}‰}‹˜xÑ(¨Ñ5Ð5r(   c              ƒ   óþ   K  — d|i}t        t        j                  | j                  «      }|j	                  | j
                  |¬«      ƒ d {  –—† }t        |«      ƒ d {  –—†  |j                  «       d   d   S 7 Œ-7 Œ­wrl   )r   r   rZ   r0   rp   rP   r+   rm   )rH   rj   rq   r0   r   s        r&   Ú_aembed_textzClovaXEmbeddings._aembed_textÔ   sq   è ø€ Ø˜4�.ˆÜœE×-Ñ-¨t×/@Ñ/@ÓAˆØ%×*Ñ*¨t¯}©}À7Ð*ÓK×KˆÜ˜xÓ(×(Ð(Ø�}‰}‹˜xÑ(¨Ñ5Ð5ð LøØ(ús$   ‚A	A=ÁA9ÁA=ÁA;ÁA=Á;A=Útextsc                 óX   — g }|D ]"  }|j                  | j                  |«      «       Œ$ |S ©N)Úappendrr   )rH   ru   Ú
embeddingsrj   s       r&   Úembed_documentsz ClovaXEmbeddings.embed_documentsÛ   s0   € Øˆ
ÛˆDØ×Ñ˜d×.Ñ.¨tÓ4Õ5ð àÐr(   c                 ó$   — | j                  |«      S rw   )rr   ©rH   rj   s     r&   Úembed_queryzClovaXEmbeddings.embed_queryá   s   € Ø×Ñ Ó%Ð%r(   c              ƒ   óx   K  — g }|D ],  }| j                  |«      ƒ d {  –—† }|j                  |«       Œ. |S 7 Œ­wrw   )rt   rx   )rH   ru   ry   rj   ro   s        r&   Úaembed_documentsz!ClovaXEmbeddings.aembed_documentsä   sC   è ø€ Øˆ
ÛˆDØ"×/Ñ/°Ó5×5ˆIØ×Ñ˜iÕ(ð ð Ðð 6ús   ‚:ž8Ÿ:c              ƒ   ó@   K  — | j                  |«      ƒ d {  –—† S 7 Œ­wrw   )rt   r|   s     r&   Úaembed_queryzClovaXEmbeddings.aembed_queryë   s   è ø€ Ø×&Ñ& tÓ,×,Ð,Ð,ús   ‚—˜)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  … ññ  &+°4Ô%8€FˆH�U—\‘\Ñ"Ó8Ù05¸dÔ0C€L�(˜5×,Ñ,Ñ-ÓCá38ÀÈYÔ3WÐ˜X iÑ0ÓWØXá-2¸4ÀÔ-WÐ�x 	Ñ*ÓWØRá#¨D¸
ÔC€Hˆh�s‰mÓCðñ "¨$Ô/€FˆH�S‰MÓ/ÙØØSô€K�ó ñ Ø"Ù% l°GÓ<Ø:ô€J�ó ñ ˜A rÔ*€GˆSÓ*á°dÐQSÔT€Làð	˜D  c ™Nò 	ó ð	ð ð
˜#ò 
ó ð
ñ ˜'Ô"ð dò ó #ðð< ó óó
Kð  c¨3 h¡ó ð<6 ð 6¨¨U©ó 6ð6 sð 6¨t°E©{ó 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–      s‚   ðÛ ß 2Õ 2ã Ý 0ß D÷÷ õ #à:Ð Ø#JÐ  à	ˆ×	Ñ	˜8Ó	$€ð	
˜eŸn™nð 	
°ó 	
ð	
 U§^¡^ð 	
¸ó 	
ô}-�y *õ }-r(   