o
    ưix                     @   sv   d Z ddlmZ ddlZddlmZ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 G d
d deeZdS )zN
Translates from OpenAI's `/v1/embeddings` to IBM's `/text/embeddings` route.
    )OptionalN)BaseEmbeddingConfigLiteLLMLoggingObj)AllEmbeddingInputValues)WatsonXAIEndpoint)EmbeddingResponseUsage   )IBMWatsonXMixin_get_api_paramsc                   @   s   e Z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dee dee dededede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S )IBMWatsonXEmbeddingConfigmodelreturnc                 C   s   g S N )selfr   r   r   `/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/watsonx/embed/transformation.pyget_supported_openai_params   s   z5IBMWatsonXEmbeddingConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   s   |S r   r   )r   r   r   r   r   r   r   r   map_openai_params   s   z+IBMWatsonXEmbeddingConfig.map_openai_paramsinputheadersc                 C   s(   t ||d}| j||d}||d|S )N)paramsr   )r   Z
api_params)Zinputs
parameters)r   Z_prepare_payload)r   r   r   r   r   Zwatsonx_api_paramsZwatsonx_auth_payloadr   r   r   transform_embedding_request!   s   z5IBMWatsonXEmbeddingConfig.transform_embedding_requestNapi_baseapi_keylitellm_paramsstreamc           
      C   sj   | j |d}tjj}|dr!d|ddd  }	|j|	d}|d| }| j	||
dd d}|S )N)r   zdeployment//   )deployment_idapi_version)urlr$   )Z_get_base_urlr   Z
EMBEDDINGSvalue
startswithjoinsplitformatrstripZ_add_api_version_to_urlpop)
r   r   r   r   r   r   r    r%   Zendpointr#   r   r   r   get_complete_url4   s   	
z*IBMWatsonXEmbeddingConfig.get_complete_urlraw_responsemodel_responselogging_objrequest_datac	                 C   s   |j |jd | }	|d u rt|	dd d}|	dg }
g }t|
D ]\}}|d||d d q$d|_||_|	dd	}t	|d
t
|d	|d |S )N)original_responseZmodel_id)r   results	embedding)objectindexr4   listZinput_token_countr   usage)Zprompt_tokensZcompletion_tokensZtotal_tokens)Z	post_calltextjsonr   get	enumerateappendr5   datasetattrr   )r   r   r.   r/   r0   r   r1   r   r   Z	json_respr3   Zembedding_responseidxresultZinput_tokensr   r   r   transform_embedding_responseJ   s8   	z6IBMWatsonXEmbeddingConfig.transform_embedding_responser   )__name__
__module____qualname__strr7   r   dictboolr   r   r   r   r-   httpxResponser   r   rB   r   r   r   r   r      sv    
	

	
r   )__doc__typingr   rI   Z.litellm.llms.base_llm.embedding.transformationr   r   Zlitellm.types.llms.openair   Zlitellm.types.llms.watsonxr   Zlitellm.types.utilsr   r   Zcommon_utilsr
   r   r   r   r   r   r   <module>   s    