
    h(                         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 d	d
lmZ  G d de      Zy)    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllEmbeddingInputValuesAllMessageValues)EmbeddingResponseUsage   InfinityErrorc                   `   e Zd ZdZddZ	 ddee   dee   deded	ed
ee   defdZ		 	 ddedede
e   ded	ede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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) InfinityEmbeddingConfigz?
    Reference: https://infinity.modal.michaelfeil.eu/docs
    returnNc                      y N )selfs    j/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/infinity/embedding/transformation.py__init__z InfinityEmbeddingConfig.__init__   s        api_baseapi_keymodeloptional_paramslitellm_paramsstreamc                 n    |t        d      |j                  d      }|j                  d      s| d}|S )Nz,api_base is required for Infinity embeddings/z/embeddings)
ValueErrorrstripendswith)r   r   r   r   r   r    r!   s          r   get_complete_urlz(InfinityEmbeddingConfig.get_complete_url   sC     KLL??3'  /";/Hr   headersmessagesc                 R    |t        d      }d| ddd}d|v r|d   |d<   i ||S )NINFINITY_API_KEYzBearer zapplication/json)AuthorizationacceptzContent-Typer,   r	   )	r   r(   r   r)   r   r    r   r   default_headerss	            r   validate_environmentz,InfinityEmbeddingConfig.validate_environment(   sX     ?$%78G  'wi0(.
 g%/6/GOO, ./-W--r   c                 
    g dS )N)encoding_formatmodality
dimensionsr   )r   r   s     r   get_supported_openai_paramsz3InfinityEmbeddingConfig.get_supported_openai_paramsB   s    
 	
r   non_default_paramsdrop_paramsc                 N    d|v r|d   |d<   d|v r|d   |d<   d|v r|d   |d<   |S )zu
        Map OpenAI params to Infinity params

        Reference: https://infinity.modal.michaelfeil.eu/docs
        r1   r2   r3   output_dimensionr   )r   r5   r   r   r6   s        r   map_openai_paramsz)InfinityEmbeddingConfig.map_openai_paramsI   sU      221CDU1VO-.++*<Z*HOJ'--2D\2RO./r   inputc                     ||d|S )N)r:   r   r   )r   r   r:   r   r(   s        r   transform_embedding_requestz3InfinityEmbeddingConfig.transform_embedding_request]   s     
 
 	
r   raw_responsemodel_responselogging_objrequest_datac	                    	 |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)messagestatus_coder   dataobjectusageprompt_tokensr   total_tokens)rG   rH   )json	Exceptionr   textrC   getr   rD   rE   r   rF   )r   r   r=   r>   r?   r   r@   r   r    raw_response_jsonrF   s              r   transform_embedding_responsez4InfinityEmbeddingConfig.transform_embedding_responsej   s    	 , 1 1 3  144W=/33F; 1 5 5h ?+//<@@RST*..w;??PQR
  %  	$))|7O7O 	s   B* *+Cerror_messagerC   c                     t        |||      S )N)rB   rC   r(   r   )r   rO   rC   r(   s       r   get_error_classz'InfinityEmbeddingConfig.get_error_class   s     !{G
 	
r   )r   Nr   )NN)__name__
__module____qualname____doc__r   r   strdictboolr'   r   r   r/   listr4   r9   r   r<   httpxResponser   LiteLLMLoggingObjrN   intr   Headersr   rQ   r   r   r   r   r      s    "&3- # 	
    
0 "&"&.. . '(	.
 . . #. 3-. 
.4
 
 
   	
  
(

 '
 	

 
 

& "& "! nn *	
 ' #    
<
 
/2
=B4CV=W
	
r   r   )typingr   r   r   rZ   *litellm.litellm_core_utils.litellm_loggingr   r\   )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   common_utilsr   r   r   r   r   <module>rg      s2    ( (  S F N 7 O 8 (~
1 ~
r   