o
    ưi/                     @   s   d dl mZ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 d dlmZmZ d dlmZmZ G d	d
 d
e	ZG dd deZdS )    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllEmbeddingInputValuesAllMessageValues)EmbeddingResponseUsagec                	       s8   e Zd Zi fdededeeejf f fddZ	  Z
S )VoyageErrorstatus_codemessageheadersc                    sD   || _ || _tjddd| _tj|| jd| _t j|||d d S )NPOST&https://api.voyageai.com/v1/embeddings)methodurl)r   request)r   r   r   )	r   r   httpxRequestr   Responseresponsesuper__init__)selfr   r   r   	__class__ c/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/voyage/embedding/transformation.pyr      s   
zVoyageError.__init__)__name__
__module____qualname__intstrr   dictr   Headersr   __classcell__r    r    r   r!   r      s    r   c                   @   s<  e Zd ZdZd%ddZ	d&dee dee ded	ed
edee defddZ	dede
fddZded	edededef
ddZ		d'dededee d	ed
edee dee defddZdeded	ededef
ddZdi i i fdedejdededee ded	ed
edefdd Zd!ed"edeeejf defd#d$ZdS )(VoyageEmbeddingConfigzG
    Reference: https://docs.voyageai.com/reference/embeddings-api
    returnNc                 C   s   d S Nr    )r   r    r    r!   r   &   s   zVoyageEmbeddingConfig.__init__api_baseapi_keymodeloptional_paramslitellm_paramsstreamc                 C   s    |r| ds| d}|S dS )Nz/embeddingsr   )endswith)r   r-   r.   r/   r0   r1   r2   r    r    r!   get_complete_url)   s
   	

z&VoyageEmbeddingConfig.get_complete_urlc                 C   s   ddgS )Nencoding_format
dimensionsr    )r   r/   r    r    r!   get_supported_openai_params8   s   z1VoyageEmbeddingConfig.get_supported_openai_paramsnon_default_paramsdrop_paramsc                 C   s,   d|v r
|d |d< d|v r|d |d< |S )z{
        Map OpenAI params to Voyage params

        Reference: https://docs.voyageai.com/reference/embeddings-api
        r5   r6   Zoutput_dimensionr    )r   r8   r0   r/   r9   r    r    r!   map_openai_params>   s
   z'VoyageEmbeddingConfig.map_openai_paramsr   messagesc                 C   s.   |d u rt dpt dpt d}dd| iS )NZVOYAGE_API_KEYZVOYAGE_AI_API_KEYZVOYAGE_AI_TOKENAuthorizationzBearer r   )r   r   r/   r;   r0   r1   r.   r-   r    r    r!   validate_environmentP   s   

z*VoyageEmbeddingConfig.validate_environmentinputc                 C   s   ||d|S )N)r>   r/   r    )r   r/   r>   r0   r   r    r    r!   transform_embedding_requestd   s
   z1VoyageEmbeddingConfig.transform_embedding_requestraw_responsemodel_responselogging_objrequest_datac	                 C   s   z|  }	W n ty   t|j|jdw |	d|_|	d|_|	d|_t	|	di dd|	di ddd}
|
|_
|S )	N)r   r   r/   dataobjectusagetotal_tokensr   )Zprompt_tokensrG   )json	Exceptionr   textr   getr/   rD   rE   r   rF   )r   r/   r@   rA   rB   r.   rC   r0   r1   Zraw_response_jsonrF   r    r    r!   transform_embedding_responseq   s    z2VoyageEmbeddingConfig.transform_embedding_responseerror_messager   c                 C   s   t |||dS )N)r   r   r   )r   )r   rM   r   r   r    r    r!   get_error_class   s   z%VoyageEmbeddingConfig.get_error_class)r+   Nr,   )NN)r"   r#   r$   __doc__r   r   r&   r'   boolr4   listr7   r:   r   r   r=   r
   r?   r   r   r   LiteLLMLoggingObjrL   r%   r   r(   r   rN   r    r    r    r!   r*   !   s    



	

	

r*   )typingr   r   r   r   Z*litellm.litellm_core_utils.litellm_loggingr   rR   Z)litellm.llms.base_llm.chat.transformationr   Z.litellm.llms.base_llm.embedding.transformationr   Zlitellm.secret_managers.mainr	   Zlitellm.types.llms.openair
   r   Zlitellm.types.utilsr   r   r   r*   r    r    r    r!   <module>   s    