
    g                         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
e	      Z G d de      Zy)    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllEmbeddingInputValuesAllMessageValues)EmbeddingResponseUsagec            	       N     e Zd Zi fdededeeej                  f   f fdZ	 xZ
S )VoyageErrorstatus_codemessageheadersc                     || _         || _        t        j                  dd      | _        t        j
                  || j                        | _        t        | !  |||       y )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__s       a/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/voyage/embedding/transformation.pyr   zVoyageError.__init__   s]     '}}G
 ;U# 	 	
    )__name__
__module____qualname__intstrr   dictr   Headersr   __classcell__)r!   s   @r"   r   r      s<    
 /1	

 
 tU]]*+	
 
r#   r   c                   N   e Zd ZdZddZ	 ddee   dededee   def
d	Z	dede
fd
Zdededededef
dZ	 	 ddededee   dedee   dee   defdZdededededef
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Zdededeeej2                  f   defdZy) VoyageEmbeddingConfigzG
    Reference: https://docs.voyageai.com/reference/embeddings-api
    returnNc                      y N )r    s    r"   r   zVoyageEmbeddingConfig.__init__&   s    r#   api_basemodeloptional_paramsstreamc                 8    |r|j                  d      s| d}|S y)Nz/embeddingsr   )endswith)r    r2   r3   r4   r5   s        r"   get_complete_urlz&VoyageEmbeddingConfig.get_complete_url)   s)     $$]3&Z{3O7r#   c                 
    ddgS )Nencoding_format
dimensionsr1   )r    r3   s     r"   get_supported_openai_paramsz1VoyageEmbeddingConfig.get_supported_openai_params6   s    
 	
r#   non_default_paramsdrop_paramsc                 6    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
        r:   r;   output_dimensionr1   )r    r=   r4   r3   r>   s        r"   map_openai_paramsz'VoyageEmbeddingConfig.map_openai_params<   s=      221CDU1VO-.--2D\2RO./r#   r   messagesapi_keyc                 ^    |%t        d      xs t        d      xs t        d      }dd| iS )NVOYAGE_API_KEYVOYAGE_AI_API_KEYVOYAGE_AI_TOKENAuthorizationzBearer r	   )r    r   r3   rB   r4   rC   r2   s          r"   validate_environmentz*VoyageEmbeddingConfig.validate_environmentN   sK     ?/0 5!"565!"34  wwi0
 	
r#   inputc                     ||d|S )N)rJ   r3   r1   )r    r3   rJ   r4   r   s        r"   transform_embedding_requestz1VoyageEmbeddingConfig.transform_embedding_requesta   s     
 
 	
r#   raw_responsemodel_responselogging_objrequest_datalitellm_paramsc	                    	 |j                         }	|	j                  d      |_        |	j                  d      |_        |	j                  d      |_        t        |	j                  di       j                  dd      |	j                  di       j                  dd      	      }
|
|_
        |S # t        $ r" t        |j                  |j                        w xY w)
N)r   r   r3   dataobjectusageprompt_tokensr   total_tokens)rV   rW   )json	Exceptionr   textr   getr3   rS   rT   r   rU   )r    r3   rM   rN   rO   rC   rP   r4   rQ   raw_response_jsonrU   s              r"   transform_embedding_responsez2VoyageEmbeddingConfig.transform_embedding_responsen   s    	 , 1 1 3  144W=/33F; 1 5 5h ?+//<@@RST*..w;??PQR
  %  	$))|7O7O 	s   B* *+Cerror_messager   c                     t        |||      S )N)r   r   r   )r   )r    r^   r   r   s       r"   get_error_classz%VoyageEmbeddingConfig.get_error_class   s     !{G
 	
r#   )r.   Nr0   )NN)r$   r%   r&   __doc__r   r   r(   r)   boolr8   listr<   rA   r   r   rI   r   rL   r   r   r   LiteLLMLoggingObjr]   r'   r   r*   r   r`   r1   r#   r"   r-   r-   !   s    "&83-8 8 	8
 8 
8
 
 
   	
  
0 "&"&

 
 '(	

 
 #
 3-
 

&

 '
 	

 
 

& "& "! nn *	
 ' #    
<
 
/2
=B4CV=W
	
r#   r-   )typingr   r   r   r   *litellm.litellm_core_utils.litellm_loggingr   rd   )litellm.llms.base_llm.chat.transformationr   .litellm.llms.base_llm.embedding.transformationr   litellm.secret_managers.mainr
   litellm.types.llms.openair   r   litellm.types.utilsr   r   r   r-   r1   r#   r"   <module>rl      s<    ( (  S F N 7 O 8
" 
(p
/ p
r#   