
    ^hL                         S SK JrJrJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJr   " S	 S
\	5      r " S S\5      rg)    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllMessageValues)EmbeddingResponseUsagec            	       \   ^  \ rS rSr0 4S\S\S\\\R                  4   4U 4S jjjr
SrU =r$ )VoyageError   status_codemessageheadersc                    > Xl         X l        [        R                  " SSS9U l        [        R
                  " XR                  S9U l        [        TU ]!  UUUS9  g )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       f/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/voyage/embedding/transformation.pyr   VoyageError.__init__   sW     '}}G
 ;U# 	 	
    )r   r   r   r   )__name__
__module____qualname____firstlineno__intstrr   dictr   Headersr   __static_attributes____classcell__)r!   s   @r"   r   r      s<    
 /1	

 
 tU]]*+	
 
r$   r   c                   r   \ rS rSrSrSS jrS\\   S\S\4S jrS\S\	4S	 jr
S
\S\S\S\S\4
S jr SS\S\S\\   S\S\\   S\4S jjrS\S\\\\   \\   \\\      4   S\S\S\4
S jrS0 0 0 4S\S\R*                  S\S\S\\   S\S\S\S\4S jjrS\S\S\\\R4                  4   S\4S jrSrg) VoyageEmbeddingConfig!   z?
Reference: https://docs.voyageai.com/reference/embeddings-api
returnNc                     g N )r    s    r"   r   VoyageEmbeddingConfig.__init__&   s    r$   api_basemodelc                 L    U(       a  UR                  S5      (       d  U S3nU$ g)Nz/embeddingsr   )endswith)r    r7   r8   s      r"   get_complete_url&VoyageEmbeddingConfig.get_complete_url)   s*    $$]33&Z{3O7r$   c                 
    SS/$ )Nencoding_format
dimensionsr5   )r    r8   s     r"   get_supported_openai_params1VoyageEmbeddingConfig.get_supported_openai_params0   s    
 	
r$   non_default_paramsoptional_paramsdrop_paramsc                 >    SU;   a  US   US'   SU;   a  US   US'   U$ )zc
Map OpenAI params to Voyage params

Reference: https://docs.voyageai.com/reference/embeddings-api
r>   r?   output_dimensionr5   )r    rB   rC   r8   rD   s        r"   map_openai_params'VoyageEmbeddingConfig.map_openai_params6   s=      221CDU1VO-.--2D\2RO./r$   r   messagesapi_keyc                 t    Uc/  [        S5      =(       d    [        S5      =(       d    [        S5      nSSU 30$ )NVOYAGE_API_KEYVOYAGE_AI_API_KEYVOYAGE_AI_TOKENAuthorizationzBearer r	   )r    r   r8   rI   rC   rJ   s         r"   validate_environment*VoyageEmbeddingConfig.validate_environmentH   sK     ?/0 5!"565!"34  wwi0
 	
r$   inputc                     UUS.UE$ )N)rR   r8   r5   )r    r8   rR   rC   r   s        r"   transform_embedding_request1VoyageEmbeddingConfig.transform_embedding_requestZ   s     
 
 	
r$   raw_responsemodel_responselogging_objrequest_datalitellm_paramsc	                     UR                  5       n	U	R                  S5      Ul        U	R                  S5      Ul        U	R                  S5      Ul        [        U	R                  S0 5      R                  SS5      U	R                  S0 5      R                  SS5      S	9n
Xl
        U$ ! [         a    [        UR                  UR                  S9ef = f)
N)r   r   r8   dataobjectusageprompt_tokensr   total_tokens)r_   r`   )json	Exceptionr   textr   getr8   r\   r]   r   r^   )r    r8   rV   rW   rX   rJ   rY   rC   rZ   raw_response_jsonr^   s              r"   transform_embedding_response2VoyageEmbeddingConfig.transform_embedding_responseg   s    	 , 1 1 3  144W=/33F; 1 5 5h ?+//<@@RST*..w;??PQR
  %  	$))|7O7O 	s   B& &)Cerror_messager   c                     [        XUS9$ )N)r   r   r   )r   )r    rh   r   r   s       r"   get_error_class%VoyageEmbeddingConfig.get_error_class   s     !G
 	
r$   r5   )r2   Nr4   )r%   r&   r'   r(   __doc__r   r   r*   r;   listr@   r+   boolrG   r   r   rP   r   floatrT   r   r   r   LiteLLMLoggingObjrf   r)   r,   r   rj   r-   r5   r$   r"   r0   r0   !   s   8# 8s 8s 8
 
 
   	
  
0 "&

 
 '(	

 
 #
 

$

 S$s)T%[$tE{2CCD
 	

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