
    hk                     |    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ee      Zy)zN
Translates from OpenAI's `/v1/embeddings` to IBM's `/text/embeddings` route.
    )OptionalN)BaseEmbeddingConfigLiteLLMLoggingObj)AllEmbeddingInputValues)WatsonXAIEndpoint)EmbeddingResponseUsage   )IBMWatsonXMixin_get_api_paramsc                       e Z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dee   dee   dedededee   defdZdedej                  dededee   dedededefdZy)IBMWatsonXEmbeddingConfigmodelreturnc                     g S N )selfr   s     e/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/watsonx/embed/transformation.pyget_supported_openai_paramsz5IBMWatsonXEmbeddingConfig.get_supported_openai_params   s    	    non_default_paramsoptional_paramsdrop_paramsc                     |S r   r   )r   r   r   r   r   s        r   map_openai_paramsz+IBMWatsonXEmbeddingConfig.map_openai_params   s
     r   inputheadersc                 N    t        |      }| j                  ||      }||d|S )N)params)r   
api_params)inputs
parameters)r   _prepare_payload)r   r   r   r   r   watsonx_api_paramswatsonx_auth_payloads          r   transform_embedding_requestz5IBMWatsonXEmbeddingConfig.transform_embedding_request!   sG     -OD#44)  5  
 )
 #
 	
r   Napi_baseapi_keylitellm_paramsstreamc                 X   | j                  |      }t        j                  j                  }|j	                  d      r5dj                  |j                  d      dd        }	|j                  |	      }|j                  d      |z   }| j                  ||j                  dd             }|S )N)r(   zdeployment//   )deployment_idapi_version)urlr0   )_get_base_urlr   
EMBEDDINGSvalue
startswithjoinsplitformatrstrip_add_api_version_to_urlpop)
r   r(   r)   r   r   r*   r+   r1   endpointr/   s
             r   get_complete_urlz*IBMWatsonXEmbeddingConfig.get_complete_url4   s       ( 3$//55M*HHU[[%5ab%9:M]CHjjo( **!4!4]D!I + 
 
r   raw_responsemodel_responselogging_objrequest_datac	           	         |j                  |j                         |j                         }	|t        |	j	                  dd             }|	j	                  dg       }
g }t        |
      D ]  \  }}|j                  d||d   d        d|_        ||_        |	j	                  dd	      }t        |d
t        |d	|             |S )N)original_responsemodel_id)r   results	embedding)objectindexrF   listinput_token_countr   usage)prompt_tokenscompletion_tokenstotal_tokens)	post_calltextjsonr   get	enumerateappendrG   datasetattrr	   )r   r   r>   r?   r@   r)   rA   r   r*   	json_resprE   embedding_responseidxresultinput_tokenss                  r   transform_embedding_responsez6IBMWatsonXEmbeddingConfig.transform_embedding_responseJ   s     	*// 	 	
 !%%'	!.Y]]:t5TUN--	2.$W-KC%%) !'!4 . !'0 }}%8!<*"#)	
 r   r   )__name__
__module____qualname__strrI   r   dictboolr   r   r'   r   r=   httpxResponser   r   r\   r   r   r   r   r      s>        	
  


 '
 	

 
 

4 "&3- # 	
    
,'' nn' *	'
 '' #' ' ' ' 
'r   r   )__doc__typingr   rc   .litellm.llms.base_llm.embedding.transformationr   r   litellm.types.llms.openair   litellm.types.llms.watsonxr   litellm.types.utilsr   r	   common_utilsr   r   r   r   r   r   <module>rl      s6      > 8 8 ;]1D ]r   