o
    ưi                     @   s*  d Z ddlmZmZmZmZmZ ddlmZm	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 d	dlmZ G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZde de fddZ!G d d! d!eZ"dS )"zN
Translates from OpenAI's `/v1/embeddings` to IBM's `/text/embeddings` route.
    )OptionalListDictLiteralUnion)	BaseModelField)cached_propertyN)BaseEmbeddingConfigLiteLLMLoggingObj)AllEmbeddingInputValues)EmbeddingResponse   GenAIHubOrchestrationError)get_token_creatorc                   @   s   e Zd ZU eed< eed< dS )UsageZprompt_tokensZtotal_tokensN)__name__
__module____qualname__int__annotations__ r   r   \/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/sap/embed/transformation.pyr         
 r   c                   @   s:   e Zd ZU ed ed< edddZee ed< e	ed< dS )EmbeddingItem	embeddingobject.z*Vector of floats (length varies by model).)descriptionindexN)
r   r   r   r   r   r   r   r   floatr   r   r   r   r   r      s   
 r   c                   @   s6   e Zd ZU ed ed< ee ed< eed< eed< dS )FinalResultlistr   datamodelusageN)	r   r   r   r   r   r   r   strr   r   r   r   r   r!   #   s
   
 r!   c                   @      e Zd ZU eed< eed< dS )EmbeddingsResponseZ
request_idfinal_resultN)r   r   r   r&   r   r!   r   r   r   r   r(   *   r   r(   c                   @   s6   e Zd ZU eed< dZeed< eeddZeed< dS )EmbeddingModelnamelatestversion
parameters)default_factoryZvalidation_aliasparamsN)	r   r   r   r&   r   r-   r   dictr0   r   r   r   r   r*   /   s   
 r*   c                   @   s   e Zd ZU eed< dS )EmbeddingsModules
embeddingsN)r   r   r   r*   r   r   r   r   r   r2   5   s   
 r2   c                   @   s2   e Zd ZU eeee f ed< dZed ed< dS )EmbeddingInputtext)r5   ZdocumentquerytypeN)	r   r   r   r   r&   r   r   r7   r   r   r   r   r   r4   9   s   
 r4   c                   @   r'   )EmbeddingRequestconfiginputN)r   r   r   r2   r   r4   r   r   r   r   r8   >   r   r8   r#   returnc                 C   s   |di |   S )Nr   )Z
model_dump)r#   r$   r   r   r   validate_dictC   s   r<   c                       s  e Zd Z fddZedefddZedefddZ	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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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  ZS )&GenAIHubEmbeddingConfigc                    s&   t    i | _t \| _| _| _d S N)super__init__Z_access_token_datar   token_creatorbase_urlresource_group)self	__class__r   r   r@   H   s   
z GenAIHubEmbeddingConfig.__init__r;   c                 C   s   |   }|| jddd}|S )Nzapplication/jsonZLiteLLM)AuthorizationzAI-Resource-GroupzContent-TypezAI-Client-Type)rA   rC   )rD   Zaccess_tokenheadersr   r   r   rH   M   s   zGenAIHubEmbeddingConfig.headersc                 C   s   t jddV}g }|j| jd | jd }|dg D ]+}|d dkrG|j| jd|d	   | jd }|d
 dkrG||d |d f qt|dd ddd d W  d    S 1 s_w   Y  d S )N   )timeoutz/lm/deploymentsrH   	resourcesZ
scenarioIdZorchestrationz/lm/configurations/ZconfigurationIdZexecutableIdZdeploymentUrlZ	createdAtc                 S   s   | d S )N   r   )xr   r   r   <lambda>k   s    z8GenAIHubEmbeddingConfig.deployment_url.<locals>.<lambda>T)keyreverser   )httpxZClientgetrB   rH   jsonappendsorted)rD   clientZvalid_deploymentsZdeploymentsZ
deploymentZconfig_detailsr   r   r   deployment_urlY   s0   $z&GenAIHubEmbeddingConfig.deployment_urlc                 C   s
   t ||S r>   r   )rD   error_messagestatus_coderH   r   r   r   get_error_classm   s   
z'GenAIHubEmbeddingConfig.get_error_classr$   c                 C   s   d|v rddgS dgS )Nztext-embedding-3Zencoding_format
dimensionsr   )rD   r$   r   r   r   get_supported_openai_paramsp   s   z3GenAIHubEmbeddingConfig.get_supported_openai_paramsnon_default_paramsoptional_paramsdrop_paramsc                 C   s   |S r>   r   )rD   r^   r_   r$   r`   r   r   r   map_openai_paramsx   s   z)GenAIHubEmbeddingConfig.map_openai_paramsrH   c                 O   s   | j S r>   rK   )rD   rH   argskwargsr   r   r   validate_environment   s   z,GenAIHubEmbeddingConfig.validate_environmentNapi_baseapi_keylitellm_paramsstreamc                 C   s   | j dd }|S )N/z/v2/embeddings)rX   rstrip)rD   re   rf   r$   r_   rg   rh   urlr   r   r   get_complete_url   s   	z(GenAIHubEmbeddingConfig.get_complete_urlr:   c                 C   sZ   i }||d< | dd|d< | di |d< d|i}ddd	t|tiiit|td
}|S )Nr+   r-   r,   r.   r0   r5   modulesr3   r$   )r9   r:   )rS   r<   r*   r4   )rD   r$   r:   r_   rH   Z
model_dictZ
input_dictbodyr   r   r   transform_embedding_request   s   z3GenAIHubEmbeddingConfig.transform_embedding_requestraw_responsemodel_responselogging_objrequest_datac	           	      C   s   t | d S )Nr)   )r   Zmodel_validaterT   )	rD   r$   rp   rq   rr   rf   rs   r_   rg   r   r   r   transform_embedding_response   s   z4GenAIHubEmbeddingConfig.transform_embedding_responser>   )r   r   r   r@   propertyr   rH   r	   r&   rX   r[   r"   r]   r1   boolra   rd   r   rl   r   ro   rR   Responser   r   rt   __classcell__r   r   rE   r   r=   G   s    
	


	
r=   )#__doc__typingr   r   r   r   r   Zpydanticr   r   	functoolsr	   rR   Z.litellm.llms.base_llm.embedding.transformationr
   r   Zlitellm.types.llms.openair   Zlitellm.types.utilsr   Zchat.handlerr   credentialsr   r   r   r!   r(   r*   r2   r4   r8   r1   r<   r=   r   r   r   r   <module>   s(    