Ë
    uPêj+  ã                   ó˜   — d Z ddl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mZ dd	lmZmZ  G d
„ de«      Z G d„ de
«      Zy)z´
This module is used to transform the request and response for the Voyage contextualized embeddings API.
This would be used for all the contextualized embeddings models in Voyage.
é    )ÚFinalN)ÚLogging)ÚBaseLLMException)ÚBaseEmbeddingConfig©Úget_secret_str)ÚAllEmbeddingInputValuesÚAllMessageValues)ÚEmbeddingResponseÚUsagec                   óJ   ‡ — e Zd Zi fdededeej                  z  fˆ fd„Zˆ xZ	S )ÚVoyageErrorÚstatus_codeÚmessageÚheadersc                 óÊ   •— || _         || _        t        j                  dd¬«      | _        t        j
                  || j                  ¬«      | _        t        ‰| �!  |||¬«       y )NÚPOSTú4https://api.voyageai.com/v1/contextualizedembeddings)ÚmethodÚurl)r   Úrequest)r   r   r   )	r   r   ÚhttpxÚRequestr   ÚResponseÚresponseÚsuperÚ__init__)Úselfr   r   r   Ú	__class__s       €ú|/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/voyage/embedding/transformation_contextual.pyr   zVoyageError.__init__   sX   ø€ ð 'ˆÔØˆŒÜ—}‘}¨FÐ8nÔoˆŒÜŸ™°;ÈÏÉÔUˆŒÜ‰ÑØ#ØØð 	õ 	
ó    )
Ú__name__Ú
__module__Ú__qualname__ÚintÚstrÚdictr   ÚHeadersr   Ú__classcell__)r   s   @r    r   r      s7   ø„ ð
 )+ñ	
àð
ð ð
ð ˜Ÿ™Ñ%÷	
ñ 
r!   r   c                   óˆ  — e Zd ZdZdd„Z	 ddedz  dedz  deded	ed
edz  defd„Zdede	fd„Z
dedededede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dedee	e	e      z  dededef
d„Zdi i i fdedej"                  dedededz  deded	edefd„Zdededeej,                  z  defd„Zededefd„«       Zy)!ÚVoyageContextualEmbeddingConfigzG
    Reference: https://docs.voyageai.com/reference/embeddings-api
    ÚreturnNc                  ó   — y ©N© )r   s    r    r   z(VoyageContextualEmbeddingConfig.__init__)   s   € Ør!   Úapi_baseÚapi_keyÚmodelÚoptional_paramsÚlitellm_paramsÚstreamc                 ó8   — |r|j                  d«      s|› d�}|S y)Nz/contextualizedembeddingsr   )Úendswith)r   r0   r1   r2   r3   r4   r5   s          r    Úget_complete_urlz0VoyageContextualEmbeddingConfig.get_complete_url,   s+   € ñ Ø×$Ñ$Ð%@ÔAØ&˜ZÐ'@ÐA�ØˆOØEr!   c                 ó
   — ddgS )NÚencoding_formatÚ
dimensionsr/   )r   r2   s     r    Úget_supported_openai_paramsz;VoyageContextualEmbeddingConfig.get_supported_openai_params;   s   € Ø! <Ð0Ð0r!   Únon_default_paramsÚdrop_paramsc                 ó6   — d|v r|d   |d<   d|v r|d   |d<   |S )zŠ
        Map OpenAI params to Voyage params

        Reference: https://docs.voyageai.com/reference/contextualized-embeddings-api
        r:   r;   Úoutput_dimensionr/   )r   r=   r3   r2   r>   s        r    Úmap_openai_paramsz1VoyageContextualEmbeddingConfig.map_openai_params>   s=   € ð Ð 2Ñ2Ø1CÐDUÑ1VˆOÐ-Ñ.ØÐ-Ñ-Ø2DÀ\Ñ2RˆOÐ.Ñ/ØÐr!   r   Úmessagesc                 ó^   — |€%t        d«      xs t        d«      xs t        d«      }dd|› �iS )NÚVOYAGE_API_KEYÚVOYAGE_AI_API_KEYÚVOYAGE_AI_TOKENÚAuthorizationzBearer r   )r   r   r2   rB   r3   r4   r1   r0   s           r    Úvalidate_environmentz4VoyageContextualEmbeddingConfig.validate_environmentP   sK   € ð ˆ?äÐ/Ó0ò 5Ü!Ð"5Ó6ò5ä!Ð"3Ó4ð ð ˜w w iÐ0ð
ð 	
r!   Úinputc                 ó   — ||dœ|¥S )N)Úinputsr2   r/   )r   r2   rI   r3   r   s        r    Útransform_embedding_requestz;VoyageContextualEmbeddingConfig.transform_embedding_requestd   s   € ð Øñ
ð ð
ð 	
r!   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	                 ó°  — 	 |j                  «       }	|	j                  d«      |_        |	j                  d«      |_        |	j                  d«      |_        t        |	j                  di «      j                  dd«      |	j                  di «      j                  dd«      ¬«      }
|
|_
        |S # t        $ r" t        |j                  |j                  ¬«      ‚w xY w)	N)r   r   r2   ÚdataÚobjectÚusageÚtotal_tokensr   )Úprompt_tokensrU   )ÚjsonÚ	Exceptionr   Útextr   Úgetr2   rR   rS   r   rT   )r   r2   rM   rN   rO   r1   rP   r3   r4   Úraw_response_jsonrT   s              r    Útransform_embedding_responsez<VoyageContextualEmbeddingConfig.transform_embedding_responseq   sÔ   € ð	_Ø'3×'8Ñ'8Ó':Ðð
  1×4Ñ4°WÓ=ˆÔØ/×3Ñ3°FÓ;ˆÔØ 1× 5Ñ 5°hÓ ?ˆÔäØ+×/Ñ/°¸Ó<×@Ñ@ÀÐQRÓSØ*×.Ñ.¨w¸Ó;×?Ñ?ÀÐPQÓRô
ˆð  %ˆÔØÐøô ò 	_Ü l×&7Ñ&7À\×E]ÑE]Ô^Ð^ð	_ús   ‚B* Â*+CÚerror_messager   c                 ó   — t        |||¬«      S )N)r   r   r   )r   )r   r]   r   r   s       r    Úget_error_classz/VoyageContextualEmbeddingConfig.get_error_class�   s   € Ü =¸kÐSZÔ[Ð[r!   c                 ó&   — d| j                  «       v S )NÚcontext)Úlower)r2   s    r    Úis_contextualized_embeddingsz<VoyageContextualEmbeddingConfig.is_contextualized_embeddings�   s   € à˜EŸK™K›MÐ)Ð)r!   )r,   Nr.   )NN)r"   r#   r$   Ú__doc__r   r&   r'   Úboolr8   Úlistr<   rA   r
   rH   r	   rL   r   r   r   ÚLiteLLMLoggingObjr\   r%   r(   r   r_   Ústaticmethodrc   r/   r!   r    r+   r+   $   s)  „ ñóð #ñFà˜‘*ðFð �t‘ðFð ð	Fð
 ðFð ðFð �t‘ðFð 
óFð1°ð 1¸ó 1ðà ðð ðð ð	ð
 ðð 
óð2 #Ø#ñ
àð
ð ð
ð Ð'Ñ(ð	
ð
 ð
ð ð
ð �t‘ð
ð ˜‘*ð
ð 
ó
ð(
àð
ð '¨¨d°3©i©Ñ8ð
ð ð	
ð
 ð
ð 
ó
ð& #ØØ "Ø!ñàðð —n‘nðð *ð	ð
 'ðð �t‘ðð ðð ðð ðð 
óð8\¨Sð \¸sð \ÈTÐTY×TaÑTaÑMað \Ðfvó \ð ð*¨Cð *°Dò *ó ñ*r!   r+   )rd   Útypingr   r   Ú*litellm.litellm_core_utils.litellm_loggingr   rg   Ú)litellm.llms.base_llm.chat.transformationr   Ú.litellm.llms.base_llm.embedding.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair	   r
   Úlitellm.types.utilsr   r   r   r+   r/   r!   r    ú<module>rp      s@   ðñõ
 ã å SÝ FÝ NÝ 7ß Oß 8ô
Ð"ô 
ô$n*Ð&9õ n*r!   