o
    ưi&                     @   st   d dl mZmZmZ d dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ ddlmZ G d	d
 d
e	ZdS )    )ListOptionalUnionN)AllMessageValuesBaseLLMException)BaseEmbeddingConfigLiteLLMLoggingObj)AllEmbeddingInputValues)EmbeddingResponse   TritonErrorc                   @   s0  e Zd ZdZd&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ed"ee d#ee deee  fd$d%ZdS )(TritonEmbeddingConfigzR
    Transformations for triton /embeddings endpoint (This is a trtllm model)
    returnNc                 C   s   d S N )selfr   r   c/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/triton/embedding/transformation.py__init__      zTritonEmbeddingConfig.__init__modelc                 C   s   g S r   r   )r   r   r   r   r   get_supported_openai_params   r   z1TritonEmbeddingConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   s   |S )z>
        Map OpenAI params to Triton Embedding params
        r   )r   r   r   r   r   r   r   r   map_openai_params      
z'TritonEmbeddingConfig.map_openai_paramsheadersmessageslitellm_paramsapi_keyapi_basec                 C   s   i S r   r   )r   r   r   r   r   r   r    r!   r   r   r   validate_environment'   r   z*TritonEmbeddingConfig.validate_environmentinputc                 C   s   ddt |gd|dgiS )NZinputsZ
input_textZBYTES)nameshapedatatypedata)len)r   r   r#   r   r   r   r   r   transform_embedding_request3   s   z1TritonEmbeddingConfig.transform_embedding_requestraw_responsemodel_responselogging_objrequest_datac	                 C   s   z|  }	W n ty   t|j|jdw g }
|	d }|D ]"}|d }|d }| ||}t|D ]\}}|
d||d q2q|	dd|_	|
|_
|S )	N)messagestatus_codeZoutputsr%   r'   	embedding)objectindexr0   Z
model_nameNone)json	Exceptionr   textr/   split_embedding_by_shape	enumerateappendgetr   r'   )r   r   r*   r+   r,   r    r-   r   r   Zraw_response_jsonZ_embedding_outputZ_outputsoutput_shape_dataZ_split_output_dataidxr0   r   r   r   transform_embedding_responseE   s0   	z2TritonEmbeddingConfig.transform_embedding_responseerror_messager/   c                 C   s   t |||dS )N)r.   r/   r   r   )r   r@   r/   r   r   r   r   get_error_classl   s   z%TritonEmbeddingConfig.get_error_classr'   r%   c                    s8   t |dkr
td|d  fddt|d D S )Nr   zShape must be of length 2.   c                    s$   g | ]} | |d    qS )rB   r   ).0ir'   Zembedding_sizer   r   
<listcomp>z   s    zBTritonEmbeddingConfig.split_embedding_by_shape.<locals>.<listcomp>r   )r(   
ValueErrorrange)r'   r%   r   rE   r   r7   s   s   
z.TritonEmbeddingConfig.split_embedding_by_shape)r   N)NN)__name__
__module____qualname____doc__r   strlistr   dictboolr   r   r   r   r"   r	   r)   httpxResponser
   r   r?   intr   ZHeadersr   rA   staticmethodfloatr7   r   r   r   r   r      s    

	

	

'

r   )typingr   r   r   rQ   Z)litellm.llms.base_llm.chat.transformationr   r   Z.litellm.llms.base_llm.embedding.transformationr   r   Zlitellm.types.llms.openair	   Zlitellm.types.utilsr
   Zcommon_utilsr   r   r   r   r   r   <module>   s    