Ë
    uPêj•  ã                   ó†   — d Z ddlmZmZ ddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZ d	d
lmZmZ  G d„ de«      Zy)z_
Volcengine Embedding Transformation
Transforms OpenAI embedding requests to Volcengine format
é    )ÚAnyÚFinalN)ÚLogging)ÚBaseLLMException)ÚBaseEmbeddingConfig)ÚAllEmbeddingInputValuesÚAllMessageValues)ÚEmbeddingResponseé   )Úget_volcengine_base_urlÚget_volcengine_headersc                   ó¤  ‡ — e Zd ZdZ	 ddedz  ddfd„Zeˆ fd„«       Zdedee   fd„Z		 dd	edz  d
edz  dede
de
dedz  defd„Zde
eef   de
eef   dedede
eef   f
d„Zdedede
de
de
f
d„Zdedej$                  deded
edz  de
de
de
defd„Z	 	 d de
dedee   de
de
d
edz  d	edz  de
fd„Zdedede
ej2                  z  defd„Zˆ xZS )!ÚVolcEngineEmbeddingConfigz�
    Configuration class for Volcengine embedding models.
    Reference: https://ark.cn-beijing.volces.com/api/v3/embeddings
    NÚencoding_formatÚreturnc                 ó¤   — t        «       j                  «       }|j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' y )NÚself)ÚlocalsÚcopyÚitemsÚsetattrÚ	__class__)r   r   Úlocals_ÚkeyÚvalues        úu/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/volcengine/embedding/transformation.pyÚ__init__z"VolcEngineEmbeddingConfig.__init__   sF   € ô  ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 ó    •— t         ‰| �  «       S ©N)ÚsuperÚ
get_config)Úclsr   s    €r   r"   z$VolcEngineEmbeddingConfig.get_config"   s   ø€ ä‰wÑ!Ó#Ð#r   Úmodelc                 ó
   — g d¢S )zÎ
        Get the list of OpenAI parameters supported by Volcengine embedding models.

        Args:
            model: The model name

        Returns:
            List of supported parameter names
        )r   ÚuserÚextra_headers© )r   r$   s     r   Úget_supported_openai_paramsz5VolcEngineEmbeddingConfig.get_supported_openai_params&   s   € ò
ð 	
r   Úapi_baseÚapi_keyÚoptional_paramsÚlitellm_paramsÚstreamc                 óN   — t        |«      }|j                  d«      r|› d�S |› d�S )a6  
        Get the complete URL for volcengine embedding API calls.

        Args:
            api_base: Optional custom API base URL
            api_key: API key (not used for URL construction)
            model: Model name (not used for URL construction)
            optional_params: Optional parameters (not used for URL construction)
            litellm_params: LiteLLM parameters (not used for URL construction)
            stream: Stream parameter (not used for URL construction)

        Returns:
            Complete URL for the embedding API endpoint
        z/api/v3z/embeddingsz/api/v3/embeddings)r   Úendswith)r   r*   r+   r$   r,   r-   r.   Úbase_urls           r   Úget_complete_urlz*VolcEngineEmbeddingConfig.get_complete_url6   s7   € ô. 2°(Ó;ˆà×Ñ˜YÔ'Ø�Z˜{Ð+Ð+à�ZÐ1Ð2Ð2r   Únon_default_paramsÚdrop_paramsc                 óà   — |j                  «       D ]Z  \  }}|dk(  r|dv r||d<   Œ|rŒt        d|› d�«      ‚|dk(  r||d<   Œ2|| j                  |«      v r|||<   ŒK|rŒNt        d|› �«      ‚ |S )az  
        Map OpenAI embedding parameters to Volcengine format.

        Args:
            non_default_params: Parameters that are not default values
            optional_params: Optional parameters dict to update
            model: The model name
            drop_params: Whether to drop unsupported parameters

        Returns:
            Updated optional_params dict
        r   )ÚfloatÚbase64NzUnsupported encoding_format: z*. Volcengine supports: float, base64, nullr&   z&Unsupported parameter for Volcengine: )r   Ú
ValueErrorr)   )r   r3   r,   r$   r4   Úparamr   s          r   Úmap_openai_paramsz+VolcEngineEmbeddingConfig.map_openai_paramsT   sª   € ð& /×4Ñ4Ó6ò 	S‰LˆE�5ØÐ)Ò)àÐ5Ñ5Ø9>�OÐ$5Ò6â&Ü(Ø;¸E¸7ÐBlÐmóð ð ˜&’à*/� Ò'Ø˜$×:Ñ:¸5ÓAÑAØ).� Ò&Ú Ü Ð#IÈ%ÈÐ!QÓRÐRð!	Sð$ Ðr   ÚinputÚheadersc                 óv   — |t        |t        «      r|n|gdœ}d|v r|d   }|�||d<   d|v r|d   }|�||d<   |S )z0Transform embedding request to Volcengine format)r$   r;   r   r&   )Ú
isinstanceÚlist)r   r$   r;   r,   r<   Údatar   r&   s           r   Útransform_embedding_requestz5VolcEngineEmbeddingConfig.transform_embedding_request{   sj   € ð Ü(¨´Ô5‘U¸E¸7ñ
ˆð  Ñ/Ø%4Ð5FÑ%GˆOØÐ*Ø*9�Ð&Ñ'à�_Ñ$Ø)¨&Ñ1ˆDØÐØ#��V‘àˆr   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	                 óþ   — 	 |j                  «       }	d|	j                  dg «      |	j                  d|«      |	j                  di «      dœ}d|	v r|	d   |d<   t	        d	i |¤ŽS # t        $ r}
t        d|
› �«      ‚d}
~
ww xY w)
z2Transform Volcengine response to EmbeddingResponsez-Failed to parse Volcengine response as JSON: Nr?   r@   r$   Úusage)Úobjectr@   r$   rG   Úidr(   )ÚjsonÚ	Exceptionr8   Úgetr
   )r   r$   rB   rC   rD   r+   rE   r,   r-   Úresponse_jsonÚeÚtransformed_responses               r   Útransform_embedding_responsez6VolcEngineEmbeddingConfig.transform_embedding_response–   s¥   € ð	RØ#/×#4Ñ#4Ó#6ˆMð Ø!×%Ñ% f¨bÓ1Ø"×&Ñ& w°Ó6Ø"×&Ñ& w°Ó3ñ	'
Ðð �=Ñ Ø)6°tÑ)<Ð  Ñ&ô !Ñ8Ð#7Ñ8Ð8øô# ò 	RÜÐLÈQÈCÐPÓQÐQûð	Rús   ‚A  Á 	A<Á)A7Á7A<Úmessagesc                 ó>   — |€t        d«      ‚t        |«      }i |¥|¥S )z'Validate environment and return headersz1api_key is required for Volcengine authentication)r8   r   )	r   r<   r$   rQ   r,   r-   r+   r*   Úvolcengine_headerss	            r   Úvalidate_environmentz.VolcEngineEmbeddingConfig.validate_environment·   s1   € ð ˆ?ÜÐPÓQÐQÜ$:¸7Ó$CÐØ0�'Ð0Ð/Ð0Ð0r   Úerror_messageÚstatus_codec                 ón   — ddl m} t        |t        «      rt	        j
                  |«      } ||||¬«      S )z%Get error class for Volcengine errorsr   )ÚVolcEngineError)rV   Úmessager<   )Úcommon_utilsrX   r>   ÚdictÚhttpxÚHeaders)r   rU   rV   r<   rX   s        r   Úget_error_classz)VolcEngineEmbeddingConfig.get_error_classÈ   s5   € å2ô �gœtÔ$Ü—m‘m GÓ,ˆGÙØ#Ø!Øô
ð 	
r   r    )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Úclassmethodr"   r?   r)   r[   Úboolr2   r   r:   r   rA   r\   ÚResponser
   ÚLiteLLMLoggingObjrP   r	   rT   Úintr]   r   r^   Ú__classcell__)r   s   @r   r   r      s-  ø„ ñð '+ñ4à˜t™ð4ð 
ó4ð ó$ó ð$ð
°ð 
¸¸c¹ó 
ð. #ñ3à˜‘*ð3ð �t‘ð3ð ð	3ð
 ð3ð ð3ð �t‘ð3ð 
ó3ð<%à   c ™Nð%ð ˜c 3˜h™ð%ð ð	%ð
 ð%ð 
ˆc�3ˆh‰ó%ðNàðð 'ðð ð	ð
 ðð 
óð69àð9ð —n‘nð9ð *ð	9ð
 'ð9ð �t‘ð9ð ð9ð ð9ð ð9ð 
ó9ðP #Ø#ñ1àð1ð ð1ð Ð'Ñ(ð	1ð
 ð1ð ð1ð �t‘ð1ð ˜‘*ð1ð 
ó1ð"
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfv÷ 
r   r   )rb   Útypingr   r   r\   Ú*litellm.litellm_core_utils.litellm_loggingr   rg   Ú)litellm.llms.base_llm.chat.transformationr   Ú.litellm.llms.base_llm.embedding.transformationr   Úlitellm.types.llms.openair   r	   Úlitellm.types.utilsr
   rZ   r   r   r   r(   r   r   ú<module>rp      s3   ðñ÷
 ã å SÝ FÝ Nß OÝ 1ç Jô@
Ð 3õ @
r   