Ë
    uPêjê  ã                   ó–   — d dl mZ d dl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)é    )ÚMapping)ÚAnyÚFinalN)ÚLogging)ÚBaseLLMException)ÚBaseRerankConfig)Úget_secret_str)ÚOptionalRerankParamsÚRerankRequestÚRerankResponseé   ©ÚCohereErrorc                   óÔ  — e Zd ZdZd$d„Z	 d%dedz  dededz  defd„Zdedefd	„Z		 	 	 	 	 	 	 d&d
edz  dede
dedeeeeef   z     dedz  dedz  dee   dz  de
dz  dedz  dedz  dedz  defd„Z	 	 	 d'dedededz  dedz  deeef   dz  defd„Z	 d%dededededz  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y)(ÚCohereRerankConfigz@
    Reference: https://docs.cohere.com/v2/reference/rerank
    ÚreturnNc                  ó   — y ©N© )Úselfs    ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/cohere/rerank/transformation.pyÚ__init__zCohereRerankConfig.__init__   s   € Øó    Úapi_baseÚmodelÚoptional_paramsc                 ó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   r   s       r   Úget_complete_urlz#CohereRerankConfig.get_complete_url   s7   € ñ à—‘ 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_docÚinstructionc           
      ó6   — t        t        |||||	|
¬«      «      S )zf
        Map Cohere rerank params

        No mapping required - returns all supported params
        )r#   r$   r%   r'   r(   r&   )Údictr
   )r   r*   r   r+   r#   r$   r,   r%   r'   r(   r&   r-   r.   s                r   Úmap_cohere_rerank_paramsz+CohereRerankConfig.map_cohere_rerank_params0   s+   € ô( Ü ØØ#ØØ'Ø!1Ø#5ôó	
ð 		
r   ÚheadersÚapi_keyÚlitellm_paramsc                 óª   — |€*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-typer8   )r	   ÚlitellmÚ
cohere_keyÚ
ValueError)r   r2   r   r3   r   r4   Údefault_headerss          r   Úvalidate_environmentz'CohereRerankConfig.validate_environmentO   sƒ   € ð ˆ?Ü$Ð%5Ó6Òl¼.ÈÓ:VÒlÔZa×ZlÑZlˆGàˆ?ÜØ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?   r2   r4   Úrerank_requests         r   Útransform_rerank_requestz+CohereRerankConfig.transform_rerank_requestl   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_datac	                 ó–   — 	 |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   rF   rG   rH   r3   rI   r   r4   Úraw_response_jsons
             r   Útransform_rerank_responsez,CohereRerankConfig.transform_rerank_response‚   sT   € ð 	_Ø'3×'8Ñ'8Ó':Ðô Ñ2Ð 1Ñ2Ð2øô ò 	_Ü l×&7Ñ&7À\×E]ÑE]Ô^Ð^ð	_ús	   ‚ �+AÚerror_messagerM   c                 ó   — t        ||¬«      S )NrK   r   )r   rS   rM   r2   s       r   Úget_error_classz"CohereRerankConfig.get_error_class™   s   € Ü =¸kÔJÐJr   )r   Nr   )NNNTNNN)NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr0   r!   Úlistr)   Úboolr   Úintr1   r   Úobjectr>   rE   ÚhttpxÚResponser   ÚLiteLLMLoggingObjrR   ÚHeadersr   rU   r   r   r   r   r      sp  „ ñóð (,ñ	1à˜‘*ð1ð ð1ð  ™ð	1ð
 
ó1ð
¸ð 
Àó 
ð" +/Ø Ø(,Ø(,Ø)-Ø)-Ø"&ñ
à  4™Kð
ð ð
ð ð	
ð
 ð
ð ˜˜d 3¨ 8™nÑ,Ñ-ð
ð ! 4™Zð
ð �T‰zð
ð ˜#‘Y Ñ%ð
ð  ™+ð
ð   $™Jð
ð   $™Jð
ð ˜4‘Zð
ð 
ó
ðF #Ø'+Ø6:ñ.àð.ð ð.ð �t‘ð	.ð
  ™ð.ð    V Ñ,¨tÑ3ð.ð 
ó.ðD '+ñ<àð<ð !%ð<ð ð	<ð
 ˜t™ð<ð 
ó<ð8 #ØØ "Ø!ñ3àð3ð —n‘nð3ð 'ð	3ð
 'ð3ð �t‘ð3ð ð3ð ð3ð ð3ð 
ó3ð.K¨Sð K¸sð KÈTÐTY×TaÑTaÑMað KÐfvô Kr   r   )Úcollections.abcr   Útypingr   r   r_   r:   Ú*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>rk      s7   ðÝ #ß ã ã Ý SÝ FÝ HÝ 7ß TÑ Tå &ôJKÐ)õ JKr   