Ë
    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ZddlmZ ddl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e«      Zy)a¤  
Translate from OpenAI's `/v1/embeddings` to Sagemaker's `/invoke`

In the native Cohere embed format for self-hosted Cohere endpoints
(AWS Marketplace / JumpStart). Cohere containers expect
`{"texts": [...], "input_type": "..."}` and reject the HuggingFace TGI shape
`{"inputs": [...]}` with `422 EmbedReqV2.inputs is of type string but should
be of type Object`.

Reference: https://docs.cohere.com/v2/reference/embed
é    )ÚTYPE_CHECKINGÚAnyÚcast)ÚLogging)ÚAllEmbeddingInputValues)ÚHeadersÚResponseN)ÚBaseLLMException)ÚBaseEmbeddingConfig)ÚBedrockCohereEmbeddingConfig)ÚCohereEmbeddingConfig)ÚEmbeddingResponseé   ©ÚSagemakerErrorc                   ó   — e Zd ZdZd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) ÚSagemakerCohereEmbeddingConfigzG
    SageMaker invoke payload for self-hosted Cohere embed models.
    ÚreturnNc                  ó   — y )N© )Úselfs    ú{/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/sagemaker/embedding/cohere_transformation.pyÚ__init__z'SagemakerCohereEmbeddingConfig.__init__&   s   € Øó    Úmodelc                 ó
   — g d¢S )N)Úencoding_formatÚ
dimensionsÚ
input_typer   )r   r   s     r   Úget_supported_openai_paramsz:SagemakerCohereEmbeddingConfig.get_supported_openai_params)   s   € Ú>Ð>r   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 óT   — t        «       j                  ||¬«      }d|v r|d   |d<   |S )N)r!   r"   r   )r   Úmap_openai_params)r   r!   r"   r   r#   s        r   r%   z0SagemakerCohereEmbeddingConfig.map_openai_params,   sC   € ô 7Ó8×JÑJØ1Ø+ð Kó 
ˆð Ð-Ñ-Ø,>¸|Ñ,LˆO˜LÑ)ØÐr   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N)Úmessager'   r(   r   )r   r&   r'   r(   s       r   Úget_error_classz.SagemakerCohereEmbeddingConfig.get_error_class;   s   € Ü mÀÐV]Ô^Ð^r   Úinputr   c                 óB  — t        |t        «      r|g}ngt        |t        «      rK|r1t        |d   t        «      st        |d   t        «      rt	        d«      ‚t        t        t           |«      }nt        |«      g}t        t        «       j                  |||¬«      «      S )zL
        Transform embedding request for Cohere models on SageMaker
        r   zInput must be a list of strings)r   r,   Úinference_params)	Ú
isinstanceÚstrÚlistÚintÚ
ValueErrorr   Údictr   Ú_transform_request)r   r   r,   r"   r(   Ú
input_lists         r   Útransform_embedding_requestz:SagemakerCohereEmbeddingConfig.transform_embedding_request>   s�   € ô �eœSÔ!Ø%* G‰JÜ˜œtÔ$Ùœ* U¨1¡X¬tÔ4¼
À5ÈÁ8ÌSÔ8QÜ Ð!BÓCÐCÜœd¤3™i¨Ó/‰Jä˜e›*˜ˆJäÜ(Ó*×=Ñ=ØØ Ø!0ð >ó ó
ð 	
r   Úraw_responseÚmodel_responser   Úlogging_objÚLiteLLMLoggingObjÚapi_keyÚrequest_dataÚlitellm_paramsc	                 ó&  — |j                   j                  d«      xs( |j                  d«      xs |j                  d«      xs g }	t        |	t        «      r|	g}	t	        «       j                  |j                  «       ||t        j                  |	¬«      S )uM  
        Transform embedding response for Cohere models on SageMaker.

        Uses `CohereEmbeddingConfig._populate_embedding_response` (not
        `_transform_response`) so we do not log `post_call` a second time
        â€” the SageMaker embedding handler already logs `post_call` before
        invoking this transform.
        r,   ÚtextsÚimages)Úresponse_jsonr9   r   Úencodingr,   )	Úmodel_call_detailsÚgetr/   r0   r   Ú_populate_embedding_responseÚjsonÚlitellmrC   )
r   r   r8   r9   r:   r<   r=   r"   r>   Úinput_values
             r   Útransform_embedding_responsez;SagemakerCohereEmbeddingConfig.transform_embedding_responseY   s’   € ð( ×*Ñ*×.Ñ.¨wÓ7Òx¸<×;KÑ;KÈGÓ;TÒxÐXd×XhÑXhÐiqÓXrÒxÐvxð 	ô �k¤3Ô'Ø&˜-ˆKä$Ó&×CÑCØ&×+Ñ+Ó-Ø)ØÜ×%Ñ%Øð Dó 
ð 	
r   ÚmessagesÚapi_basec                 ó
   — ddiS )zF
        Validate environment for SageMaker Cohere embeddings
        zContent-Typezapplication/jsonr   )r   r(   r   rK   r"   r>   r<   rL   s           r   Úvalidate_environmentz3SagemakerCohereEmbeddingConfig.validate_environmentz   s   € ð Ð 2Ð3Ð3r   )r   N)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r0   r1   r    r4   Úboolr%   r2   r   r
   r+   r7   r	   rJ   r   rN   r   r   r   r   r   !   s‘  „ ñóð?°ð ?¸¸c¹ó ?ðà ðð ðð ð	ð
 ðð 
óð_¨Sð _¸sð _ÈTÐT[É^ð _Ð`pó _ð
àð
ð )ð
ð ð	
ð
 ð
ð 
ó
ðB #ØØ "Ø!ñ
àð
ð ð
ð ,ð	
ð
 )ð
ð �t‘ð
ð ð
ð ð
ð ð
ð 
ó
ðP #Ø#ñ4àð4ð ð4ð �s‘)ð	4ð
 ð4ð ð4ð �t‘ð4ð ˜‘*ð4ð 
ô4r   r   )rR   Útypingr   r   r   Ú*litellm.litellm_core_utils.litellm_loggingr   r;   Úlitellm.types.llms.openair   Úhttpx._modelsr   r	   rH   Ú)litellm.llms.base_llm.chat.transformationr
   Ú.litellm.llms.base_llm.embedding.transformationr   Ú0litellm.llms.bedrock.embed.cohere_transformationr   Ú+litellm.llms.cohere.embed.v1_transformationr   Úlitellm.types.utilsr   Úcommon_utilsr   r   r   r   r   ú<module>r^      sG   ðñ
÷ ,Ñ +áÝWÝAç +ã Ý FÝ Nõõ NÝ 1å )ôf4Ð%8õ f4r   