
    g
                         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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WatsonXAIError_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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     ^/var/www/openai/venv/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                 L    t        |      }|d   }|st        d      ||||dS )N)params
project_idzproject_id is required)inputsmodel_idr"   
parameters)r   
ValueError)r   r   r   r   r   watsonx_api_paramsr"   s          r   transform_embedding_requestz5IBMWatsonXEmbeddingConfig.transform_embedding_request!   s>     -OD'5
566$)	
 	
r   Napi_basestreamc                    | j                  |      }t        j                  j                  }|j	                  d      rS|j                  d      t        dd      dj                  |j                  d      dd        }|j                  |	      }|j                  d      |z   }| j                  ||j                  d
d             }|S )N)r)   zdeployment/space_idi  zError: space_id is required for models called using the 'deployment/' endpoint. Pass in the space_id as a parameter or set it in the WX_SPACE_ID environment variable.)status_codemessage/   )deployment_idapi_version)urlr2   )_get_base_urlr   
EMBEDDINGSvalue
startswithgetr   joinsplitformatrstrip_add_api_version_to_urlpop)r   r)   r   r   r*   r3   endpointr1   s           r   get_complete_urlz*IBMWatsonXEmbeddingConfig.get_complete_url3   s       ( 3$//55M*"":.6$ # E   HHU[[%5ab%9:M]CHjjo( **!4!4]D!I + 
 
r   raw_responsemodel_responselogging_objapi_keyrequest_datalitellm_paramsc	           	         |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_responser$   )r   results	embedding)objectindexrJ   listinput_token_countr   usage)prompt_tokenscompletion_tokenstotal_tokens)	post_calltextjsonr   r8   	enumerateappendrK   datasetattrr	   )r   r   rA   rB   rC   rD   rE   r   rF   	json_resprI   embedding_responseidxresultinput_tokenss                  r   transform_embedding_responsez6IBMWatsonXEmbeddingConfig.transform_embedding_responseM   s     	*// 	 	
 !%%'	!.Y]]:t5TUN--	2.$W-KC%%) !'!4 . !'0 }}%8!<*"#)	
 r   r   )__name__
__module____qualname__strrM   r   dictboolr   r   r(   r   r@   httpxResponser   r   r_   r   r   r   r   r      s&        	
  


 '
 	

 
 

. "&3-  	
  
4'' nn' *	'
 '' #' ' ' ' 
'r   r   )__doc__typingr   rf   .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   r   <module>ro      s9      > 8 8 K K`1D `r   