Ë
    uPêjø  ã                   óª   — d Z ddlmZmZmZ erddlmZ ddlm	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mZ d
dlmZ ddlmZ  G d„ de«      Zy)zc
Translate from OpenAI's `/v1/embeddings` to Sagemaker's `/invoke`

In the Huggingface TGI format.
é    )ÚTYPE_CHECKINGÚAnyÚFinal)ÚLogging)ÚAllEmbeddingInputValues)ÚHeadersÚResponse)ÚBaseLLMException)ÚBaseEmbeddingConfig)ÚVoyageEmbeddingConfig)ÚEmbeddingResponseÚUsageé   ©ÚSagemakerErroré   )ÚSagemakerCohereEmbeddingConfigc                   ó  — e Zd ZdZd d„Zededdfd„«       Zdedee   fd„Z	d	e
d
e
dedede
f
d„Zdedede
ez  defd„Zdeddd
e
de
de
f
d„Zdi i i fdededddddedz  de
d
e
de
ddfd„Z	 	 d!de
dedee   d
e
de
dedz  dedz  de
fd„Zy)"ÚSagemakerEmbeddingConfigzW
    SageMaker embedding configuration factory for supporting embedding parameters
    ÚreturnNc                  ó   — y ©N© )Úselfs    út/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/sagemaker/embedding/transformation.pyÚ__init__z!SagemakerEmbeddingConfig.__init__   s   € Øó    Úmodelr   c                 óh   — |j                  «       }d|v r
t        «       S d|v r
t        «       S  | «       S )zÑ
        Factory method to get the appropriate embedding config based on model type

        Args:
            model: The model name

        Returns:
            Appropriate embedding config instance
        ÚvoyageÚcohere)Úlowerr   r   )Úclsr   Úmodel_lowers      r   Úget_model_configz)SagemakerEmbeddingConfig.get_model_config    s8   € ð #Ÿ[™[›]ˆØ�{Ñ"Ü(Ó*Ð*Ø�{Ñ"Ü1Ó3Ð3Ù‹uˆr   c                 óš   — |j                  «       }d|v rt        «       j                  |«      S d|v rt        «       j                  |«      S g S )Nr    r!   )r"   r   Úget_supported_openai_paramsr   )r   r   r$   s      r   r'   z4SagemakerEmbeddingConfig.get_supported_openai_params2   sK   € Ø"Ÿ[™[›]ˆØ�{Ñ"Ü(Ó*×FÑFÀuÓMÐMØ�{Ñ"Ü1Ó3×OÑOÐPUÓVÐVØˆ	r   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 ó   — |S r   r   )r   r(   r)   r   r*   s        r   Úmap_openai_paramsz*SagemakerEmbeddingConfig.map_openai_params:   s
   € ð Ðr   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N)Úmessager.   r/   r   )r   r-   r.   r/   s       r   Úget_error_classz(SagemakerEmbeddingConfig.get_error_classC   s   € Ü mÀÐV]Ô^Ð^r   Úinputr   c                 ó   — d|i|¥S )zR
        Transform embedding request for Hugging Face models on SageMaker
        Úinputsr   )r   r   r3   r)   r/   s        r   Útransform_embedding_requestz4SagemakerEmbeddingConfig.transform_embedding_requestF   s   € ð ˜%Ð3 ?Ð3Ð3r   Úraw_responseÚmodel_responser   Úlogging_objÚLiteLLMLoggingObjÚapi_keyÚrequest_dataÚlitellm_paramsc	                 óp  — 	 |j                  «       }	t	        |	t
        «      r|	}n=t	        |	t        «      r
d|	v r|	d   }n#t        ddt        |	«      j                  › �¬«      ‚t	        |t
        «      st        dd	|› �¬«      ‚g }t        |«      D ]  \  }}|j                  d||d
œ«       Œ d|_        ||_        ||_        |j                  dg «      }d}|D ]  }|t        |j!                  «       «      z  }Œ  t#        |d|¬«      |_        |S # t        $ r}
t        d|
› �|j                  ¬«      ‚d}
~
ww xY w)zS
        Transform embedding response for Hugging Face models on SageMaker
        zFailed to parse response: )r1   r.   NÚ	embeddingiô  zMUnexpected response format. Expected list or dict with 'embedding' key, got: )r.   r1   i¦  z%HF response not in expected format - )ÚobjectÚindexr?   Úlistr5   r   )Úprompt_tokensÚcompletion_tokensÚtotal_tokens)ÚjsonÚ	Exceptionr   r.   Ú
isinstancerB   ÚdictÚtypeÚ__name__Ú	enumerateÚappendr@   Údatar   ÚgetÚlenÚsplitr   Úusage)r   r   r7   r8   r9   r;   r<   r)   r=   Úresponse_dataÚeÚ
embeddingsÚoutput_dataÚidxr?   Úinput_textsÚinput_tokensÚtexts                     r   Útransform_embedding_responsez5SagemakerEmbeddingConfig.transform_embedding_responseS   s  € ð	Ø#/×#4Ñ#4Ó#6ˆMô �m¤TÔ*à&‰JÜ˜¤tÔ,°ÀÑ1Mà& {Ñ3‰Jä ØØgÔhlÐmzÓh{÷  iEñ  iEð  hFð  Gôð ô
 ˜*¤dÔ+Ü ØØ?À
¸|ÐLôð ð
  ˆÜ'¨
Ó3ò 	^‰NˆC�Ø×Ñ¨+ÀÐR[Ñ\Õ]ð	^ð !'ˆÔØ)ˆÔØ$ˆÔð *×-Ñ-¨h¸Ó;ˆØˆØò 	.ˆDØœC §
¡
£Ó-Ñ-‰Lð	.ô  %Ø&ØØ%ô 
ˆÔð Ðøô[ ò 	Ü Ø4°Q°CÐ8Ø(×4Ñ4ôð ûð	ús   ‚D Ä	D5ÄD0Ä0D5ÚmessagesÚapi_basec                 ó
   — ddiS )z?
        Validate environment for SageMaker embeddings
        zContent-Typezapplication/jsonr   )r   r/   r   r\   r)   r=   r;   r]   s           r   Úvalidate_environmentz-SagemakerEmbeddingConfig.validate_environment’   s   € ð Ð 2Ð3Ð3r   )r   N)NN)rK   Ú
__module__Ú__qualname__Ú__doc__r   ÚclassmethodÚstrr%   rB   r'   rI   Úboolr,   Úintr   r
   r2   r6   r	   r[   r   r_   r   r   r   r   r      s³  „ ñóð ð Sð Ð-Bò ó ðð"°ð ¸¸c¹ó ðà ðð ðð ð	ð
 ðð 
óð_¨Sð _¸sð _ÈTÐT[É^ð _Ð`pó _ð4àð4ð )ð4ð ð	4ð
 ð4ð 
ó4ð& #ØØ "Ø!ñ=àð=ð ð=ð ,ð	=ð
 )ð=ð �t‘ð=ð ð=ð ð=ð ð=ð 
ó=ðL #Ø#ñ4àð4ð ð4ð �s‘)ð	4ð
 ð4ð ð4ð �t‘ð4ð ˜‘*ð4ð 
ô4r   r   N)rb   Útypingr   r   r   Ú*litellm.litellm_core_utils.litellm_loggingr   r:   Úlitellm.types.llms.openair   Úhttpx._modelsr   r	   Ú)litellm.llms.base_llm.chat.transformationr
   Ú.litellm.llms.base_llm.embedding.transformationr   Ú,litellm.llms.voyage.embedding.transformationr   Úlitellm.types.utilsr   r   Úcommon_utilsr   Úcohere_transformationr   r   r   r   r   ú<module>rq      s?   ðñ÷ -Ñ ,áÝWÝAç +å FÝ NÝ Nß 8å )Ý AôG4Ð2õ G4r   