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 d	d
lmZ G dd deZdS )    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllEmbeddingInputValuesAllMessageValues)EmbeddingResponseUsage   InfinityErrorc                   @   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'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fddZded	eded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 )(InfinityEmbeddingConfigz?
    Reference: https://infinity.modal.michaelfeil.eu/docs
    returnNc                 C   s   d S N )selfr   r   e/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/infinity/embedding/transformation.py__init__   s   z InfinityEmbeddingConfig.__init__api_baseapi_keymodeloptional_paramslitellm_paramsstreamc                 C   s2   |d u rt d|d}|ds| d}|S )Nz,api_base is required for Infinity embeddings/z/embeddings)
ValueErrorrstripendswith)r   r   r   r   r   r   r   r   r   r   get_complete_url   s   	


z(InfinityEmbeddingConfig.get_complete_urlheadersmessagesc           	      C   sB   |d u rt d}d| ddd}d|v r|d |d< i ||S )NZINFINITY_API_KEYzBearer zapplication/json)AuthorizationacceptzContent-Typer%   r   )	r   r#   r   r$   r   r   r   r   default_headersr   r   r   validate_environment(   s   
z,InfinityEmbeddingConfig.validate_environmentc                 C   s   g dS )N)encoding_formatmodality
dimensionsr   )r   r   r   r   r   get_supported_openai_paramsB   s   z3InfinityEmbeddingConfig.get_supported_openai_paramsnon_default_paramsdrop_paramsc                 C   s@   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
        r)   r*   r+   Zoutput_dimensionr   )r   r-   r   r   r.   r   r   r   map_openai_paramsI   s   z)InfinityEmbeddingConfig.map_openai_paramsinputc                 C   s   ||d|S )N)r0   r   r   )r   r   r0   r   r#   r   r   r   transform_embedding_request]   s
   z3InfinityEmbeddingConfig.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)messagestatus_coder   dataobjectusageprompt_tokensr   total_tokens)r;   r<   )json	Exceptionr   textr7   getr   r8   r9   r   r:   )r   r   r2   r3   r4   r   r5   r   r   Zraw_response_jsonr:   r   r   r   transform_embedding_responsej   s    z4InfinityEmbeddingConfig.transform_embedding_responseerror_messager7   c                 C   s   t |||dS )N)r6   r7   r#   r   )r   rB   r7   r#   r   r   r   get_error_class   s   z'InfinityEmbeddingConfig.get_error_class)r   Nr   )NN)__name__
__module____qualname____doc__r   r   strdictboolr"   r   r   r(   listr,   r/   r
   r1   httpxResponser   LiteLLMLoggingObjrA   intr   ZHeadersr   rC   r   r   r   r   r      s    


	


	

r   )typingr   r   r   rL   Z*litellm.litellm_core_utils.litellm_loggingr   rN   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   Zcommon_utilsr   r   r   r   r   r   <module>   s    