Ë
    ÷¾™h<  ã                   ó–   — d dl mZmZmZmZmZ d dl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mZ dd	lmZ  G d
„ de«      Zy)é    )ÚAnyÚDictÚListÚOptionalÚUnionN)ÚLogging)ÚBaseLLMException)ÚBaseRerankConfig)Úget_secret_str)ÚOptionalRerankParamsÚRerankRequestÚRerankResponseé   ©ÚCohereErrorc                   ó’  — e Zd ZdZd#d„Zdee   dedefd„Zdedefd„Z		 	 	 	 	 	 d$d	ee
   ded
ededeeeeeef   f      dee   dee   deee      dee   dee   dee   defd„Z	 d%de
dedee   de
fd„Zde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e   de
de
de
defd„Zd ed!edee
ej4                  f   defd"„Zy)&ÚCohereRerankConfigz@
    Reference: https://docs.cohere.com/v2/reference/rerank
    ÚreturnNc                  ó   — y ©N© )Úselfs    úe/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/cohere/rerank/transformation.pyÚ__init__zCohereRerankConfig.__init__   s   € Øó    Úapi_baseÚmodelc                 óZ   — |r)|j                  d«      }|j                  d«      s|› d}|S y)Nú/z
/v1/rerankzhttps://api.cohere.ai/v1/rerank)ÚrstripÚendswith)r   r   r   s      r   Úget_complete_urlz#CohereRerankConfig.get_complete_url   s5   € Ùà—‘ sÓ+ˆHØ×$Ñ$ \Ô2Ø&˜Z zÐ2ØˆOØ0r   c                 ó
   — g d¢S )N)ÚqueryÚ	documentsÚtop_nÚmax_chunks_per_docÚrank_fieldsÚreturn_documentsr   )r   r   s     r   Ú"get_supported_cohere_rerank_paramsz5CohereRerankConfig.get_supported_cohere_rerank_params    s   € ò
ð 	
r   Únon_default_paramsÚdrop_paramsr$   r%   Úcustom_llm_providerr&   r(   r)   r'   Úmax_tokens_per_docc                 ó$   — t        |||||	|
¬«      S )zf
        Map Cohere rerank params

        No mapping required - returns all supported params
        )r$   r%   r&   r(   r)   r'   )r   )r   r+   r   r,   r$   r%   r-   r&   r(   r)   r'   r.   s               r   Úmap_cohere_rerank_paramsz+CohereRerankConfig.map_cohere_rerank_params*   s#   € ô& $ØØØØ#Ø-Ø1ô
ð 	
r   ÚheadersÚapi_keyc                 óª   — |€*t        d«      xs t        d«      xs t        j                  }|€t        d«      ‚d|› dddœ}d|v r|d   |d<   i |¥|¥S )NÚCOHERE_API_KEYÚ
CO_API_KEYz_Cohere API key is required. Please set 'COHERE_API_KEY' or 'CO_API_KEY' or 'litellm.cohere_key'zbearer zapplication/json)ÚAuthorizationÚacceptzcontent-typer6   )r   ÚlitellmÚ
cohere_keyÚ
ValueError)r   r1   r   r2   Údefault_headerss        r   Úvalidate_environmentz'CohereRerankConfig.validate_environmentF   s   € ð ˆ?äÐ/Ó0ò &Ü! ,Ó/ò&ä×%Ñ%ð ð ˆ?ÜØqóð ð
  ' w iÐ0Ø(Ø.ñ
ˆð ˜gÑ%Ø/6°Ñ/GˆO˜OÑ,ð ./Ð- WÐ-Ð-r   Úoptional_rerank_paramsc                 ó  — d|vrt        d«      ‚d|vrt        d«      ‚t        ||d   |d   |j                  dd «      |j                  dd «      |j                  dd «      |j                  dd «      ¬	«      }|j                  d
¬«      S )Nr$   z#query is required for Cohere rerankr%   z'documents is required for Cohere rerankr&   r(   r)   r'   )r   r$   r%   r&   r(   r)   r'   T)Úexclude_none)r:   r   ÚgetÚ
model_dump)r   r   r=   r1   Úrerank_requests        r   Útransform_rerank_requestz+CohereRerankConfig.transform_rerank_requeste   s¤   € ð Ð0Ñ0ÜÐBÓCÐCØÐ4Ñ4ÜÐFÓGÐGÜ&ØØ(¨Ñ1Ø,¨[Ñ9Ø(×,Ñ,¨W°dÓ;Ø.×2Ñ2°=À$ÓGØ3×7Ñ7Ð8JÈDÓQØ5×9Ñ9Ð:NÐPTÓUô
ˆð ×(Ñ(°dÐ(Ó;Ð;r   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚoptional_paramsÚlitellm_paramsc	                 ó–   — 	 |j                  «       }	t        di |	¤ŽS # t        $ r" t        |j                  |j                  ¬«      ‚w xY w)z‚
        Transform Cohere rerank response

        No transformation required, litellm follows cohere API response format
        ©ÚmessageÚstatus_coder   )ÚjsonÚ	Exceptionr   ÚtextrM   r   )
r   r   rD   rE   rF   r2   rG   rH   rI   Úraw_response_jsons
             r   Útransform_rerank_responsez,CohereRerankConfig.transform_rerank_responsez   sV   € ð 	Ø ,× 1Ñ 1Ó 3Ðô Ñ2Ð 1Ñ2Ð2øô ò 	ÜØ$×)Ñ)°|×7OÑ7Oôð ð	ús	   ‚ +AÚerror_messagerM   c                 ó   — t        ||¬«      S )NrK   r   )r   rS   rM   r1   s       r   Úget_error_classz"CohereRerankConfig.get_error_class“   s   € ô  =¸kÔJÐJr   )r   N)NNNTNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr"   Úlistr*   ÚdictÚboolr   r   r   r   Úintr   r0   r<   rC   ÚhttpxÚResponser   ÚLiteLLMLoggingObjrR   ÚHeadersr	   rU   r   r   r   r   r      s  „ ñóð1¨°#©ð 1¸sð 1Àsó 1ð
¸ð 
Àó 
ð" .2Ø#Ø+/Ø+/Ø,0Ø,0ñ
à$ T™Nð
ð ð
ð ð	
ð
 ð
ð ˜˜c 4¨¨S¨¡>Ð1Ñ2Ñ3ð
ð & c™]ð
ð ˜‰}ð
ð ˜d 3™iÑ(ð
ð # 4™.ð
ð % S™Mð
ð % S™Mð
ð 
ó
ð@ "&ñ	.àð.ð ð.ð ˜#‘ð	.ð
 
ó.ð><àð<ð !5ð<ð ð	<ð
 
ó<ð6 "&ØØ "Ø!ñ3àð3ð —n‘nð3ð 'ð	3ð
 'ð3ð ˜#‘ð3ð ð3ð ð3ð ð3ð 
ó3ð2KØ ðKØ/2ðKØ=BÀ4ÈÏÉÐCVÑ=WðKà	ôKr   r   )Útypingr   r   r   r   r   r_   r8   Ú*litellm.litellm_core_utils.litellm_loggingr   ra   Ú)litellm.llms.base_llm.chat.transformationr	   Ú+litellm.llms.base_llm.rerank.transformationr
   Úlitellm.secret_managers.mainr   Úlitellm.types.rerankr   r   r   Úcommon_utilsr   r   r   r   r   ú<module>rj      s7   ðß 3Õ 3ã Û å SÝ FÝ HÝ 7ß TÑ Tå &ôGKÐ)õ GKr   