o
    ưi                     @   s   d Z 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 )z;
This is OpenAI compatible - no transformation is applied

    )ListOptionalUnionN)Logging)BaseLLMException)BaseEmbeddingConfigget_secret_str)AllEmbeddingInputValuesAllMessageValues)EmbeddingResponseUsage   SambaNovaErrorc                   @   s&  e 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fddZ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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 )'SambaNovaEmbeddingConfigreturnNc                 C   s   d S N )selfr   r   f/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/sambanova/embedding/transformation.py__init__   s   z!SambaNovaEmbeddingConfig.__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 SambaNova embeddings/z/embeddings)
ValueErrorrstripendswith)r   r   r   r   r   r   r   r   r   r   get_complete_url   s   	


z)SambaNovaEmbeddingConfig.get_complete_urlheadersmessagesc           	      C   sB   |d u rt d}d| ddd}d|v r|d |d< i ||S )NZSAMBANOVA_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-SambaNovaEmbeddingConfig.validate_environmentc                 C   s   g S )z
        Non additional params supported, placeholder method for future supported params
        https://docs.sambanova.ai/cloud/api-reference/endpoints/embeddings-api
        r   )r   r   r   r   r   get_supported_openai_paramsB   s   z4SambaNovaEmbeddingConfig.get_supported_openai_paramsnon_default_paramsdrop_paramsc                 C   s0   |  |}| D ]\}}||v r|||< q	|S )zO
        No transformation is applied - SambaNova is openai compatible
        )r)   items)r   r*   r   r   r+   Zsupported_openai_paramsparamvaluer   r   r   map_openai_paramsI   s   

z*SambaNovaEmbeddingConfig.map_openai_paramsinputc                 C   s   ||d|S )N)r0   r   r   )r   r   r0   r   r#   r   r   r   transform_embedding_requestY   s
   z4SambaNovaEmbeddingConfig.transform_embedding_requestraw_responsemodel_responselogging_objrequest_datac	                 C   s   z|  }	W n ty   t|j|j|jdw |	d|_|	d|_|	d|_	t
|	di dd|	di ddd	}
|
|_|S )
Nmessagestatus_coder#   r   dataobjectusageprompt_tokensr   total_tokens)r<   r=   )json	Exceptionr   textr8   r#   getr   r9   r:   r   r;   )r   r   r2   r3   r4   r   r5   r   r   Zraw_response_jsonr;   r   r   r   transform_embedding_responsef   s$   z5SambaNovaEmbeddingConfig.transform_embedding_responseerror_messager8   c                 C   s   t |||dS )Nr6   r   )r   rC   r8   r#   r   r   r   get_error_class   s   z(SambaNovaEmbeddingConfig.get_error_class)r   Nr   )NN)__name__
__module____qualname__r   r   strdictboolr"   r   r   r(   r)   r/   r
   r1   httpxResponser   LiteLLMLoggingObjrB   intr   ZHeadersr   rD   r   r   r   r   r      s    


	


	

 r   )__doc__typingr   r   r   rK   Z*litellm.litellm_core_utils.litellm_loggingr   rM   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    