Ë
    uPêjð"  ã                   ó–   — d 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mZ ddlmZ dd	lmZmZmZmZmZmZ  G d
„ de«      Zy)zO
Translate between Cohere's `/rerank` format and Deepinfra's `/rerank` format.
é    )ÚMapping)ÚAnyÚFinalN)Úuuid)ÚLogging)ÚBaseLLMExceptionÚBaseRerankConfig)Úget_secret_str)ÚOptionalRerankParamsÚRerankBilledUnitsÚRerankResponseÚRerankResponseMetaÚRerankResponseResultÚRerankTokensc                   óÒ  ‡ — e Zd ZdZ	 d#dedz  de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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
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ˆ fd„Zdedefd„Zd ed!edeej,                  z  defd"„Zˆ xZS )&ÚDeepinfraRerankConfigzC
    Deepinfra Rerank - Follows the same Spec as Cohere Rerank
    NÚapi_baseÚmodelÚoptional_paramsÚreturnc                 ó‚   — |st        d«      ‚d|v r|j                  dd«      n|}|j                  d«      dz   }|› d|› �S )a}  
        Constructs the complete DeepInfra inference endpoint URL for rerank.

        Args:
            api_base (Optional[str]): The base URL for the DeepInfra API.
            model (str): The model identifier.

        Returns:
            str: The complete URL for the DeepInfra rerank inference endpoint.

        Raises:
            ValueError: If api_base is None.
        z_Deepinfra API Base is required. api_base=None. Set in call or via `DEEPINFRA_API_BASE` env var.ÚopenaiÚ ú/z
inference/)Ú
ValueErrorÚreplaceÚrstrip)Úselfr   r   r   Úapi_base_cleans        úq/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/deepinfra/rerank/transformation.pyÚget_complete_urlz&DeepinfraRerankConfig.get_complete_url    sa   € ñ& ÜØqóð ð
 <DÀxÑ;O˜×)Ñ)¨(°BÔ7ÐU]ˆð (×.Ñ.¨sÓ3°cÑ9ˆð !Ð! ¨E¨7Ð3Ð3ó    ÚheadersÚapi_keyÚlitellm_paramsc                 ól   — |€t        d«      }|€t        d«      ‚d|› �dddœ}d|v r|d   |d<   i |¥|¥S )NÚDEEPINFRA_API_KEYzRDeepinfra API key is required. Please set 'DEEPINFRA_API_KEY' environment variablezBearer zapplication/json)ÚAuthorizationÚacceptzcontent-typer(   )r
   r   )r   r#   r   r$   r   r%   Údefault_headerss          r    Úvalidate_environmentz*DeepinfraRerankConfig.validate_environmentA   si   € ð ˆ?Ü$Ð%8Ó9ˆGàˆ?ÜÐqÓrÐrð  ' w iÐ0Ø(Ø.ñ"
ˆð ˜gÑ%Ø/6°Ñ/GˆO˜OÑ,ð .�/Ð- WÐ-Ð-r"   Únon_default_paramsÚdrop_paramsÚqueryÚ	documentsÚcustom_llm_providerÚtop_nÚrank_fieldsÚreturn_documentsÚmax_chunks_per_docÚmax_tokens_per_docÚinstructionc                 óü   — i }|r|gt        |«      z  |d<   |�Z|j                  «       D ]G  \  }}|dk(  r|�||d<   Œ|dk(  r|�||d<   Œ |dk(  r|�||d<   Œ-|dk(  r|�||d<   Œ:|dk(  sŒ@|€ŒC||d<   ŒI t        di |¤ŽS )NÚqueriesr/   Úservice_tierr6   Úwebhook© )ÚlenÚitemsr   )r   r,   r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Úoptional_rerank_paramsÚkÚvs                   r    Úmap_cohere_rerank_paramsz.DeepinfraRerankConfig.map_cohere_rerank_params\   sÏ   € ð  )+ÐÙØ16°¼#Øó;ñ 1Ð" 9Ñ-ð Ð)Ø*×0Ñ0Ó2ò :‘��1Ø˜	’> a mà89Ð*¨9Ò5Ø˜+Ò%¨!¨-Ø:;Ð*¨;Ò7Ø˜.Ò(¨Q¨]Ø=>Ð*¨>Ò:Ø˜-Ò'¨A¨MØ<=Ð*¨=Ò9Ø˜)“^¨©Ø89Ð*¨9Ò5ð:ô $Ñ=Ð&<Ñ=Ð=r"   r>   c                 ó    — |€i S t        |«      S ©N)Údict)r   r   r>   r#   r%   s        r    Útransform_rerank_requestz.DeepinfraRerankConfig.transform_rerank_request�   s   € ð "Ð)ØˆIÜÐ*Ó+Ð+r"   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	                 óH  •— 	 |j                  «       }	|j                  |j                  ¬«       |	j                  dg «      }
|	j                  dd«      }|	j                  d«      }|	j                  di «      }|j                  dd«      }|j                  d	d«      }|j                  d
d«      }|j                  dd«      }|j                  dd«      }g }t	        |
«      D ]*  \  }}|j                  t        |t        |«      ¬«      «       Œ, t        |d¬«      }t        |¬«      }t        ||¬«      }t        |xs t        t        j                  «       «      ||¬«      }||||||dœ|_        |S # t         $ r+ t"        ‰| �I  ||||||||¬«      }||j                  d<   |cY S w xY w)N)Úoriginal_responseÚscoresÚinput_tokensr   Ú
request_idÚinference_statusÚstatusÚunknownÚ
runtime_msÚcostg        Útokens_generatedÚtokens_input)ÚindexÚrelevance_score)rM   Úoutput_tokens)Útotal_tokens)ÚtokensÚbilled_units)ÚidÚresultsÚmeta)rP   rR   rS   rT   rU   r   )r   rF   rG   rH   r$   rI   r   r%   r   )ÚjsonÚ	post_callÚtextÚgetÚ	enumerateÚappendr   Úfloatr   r   r   r   Ústrr   Úuuid4Ú_hidden_paramsÚ	ExceptionÚsuperÚtransform_rerank_response)r   r   rF   rG   rH   r$   rI   r   r%   Úresponse_jsonrL   rM   rN   rO   rP   rR   rS   rT   rU   r]   ÚiÚscorerZ   r[   r^   Úrerank_responseÚ	__class__s                             €r    rk   z/DeepinfraRerankConfig.transform_rerank_response�   sÓ  ø€ ð:	#Ø#/×#4Ñ#4Ó#6ˆMØ×!Ñ!°L×4EÑ4EÐ!ÔFð *×-Ñ-¨h¸Ó;ˆFØ"/×"3Ñ"3°NÀAÓ"FˆLØ -× 1Ñ 1°,Ó ?ˆJð '4×&7Ñ&7Ð8JÈBÓ&OÐØ,×0Ñ0°¸9ÓEˆFØ 0× 4Ñ 4°\À1Ó EˆJØ*×.Ñ.¨v°sÓ;ˆDØ&6×&:Ñ&:Ð;MÈqÓ&QÐØ"2×"6Ñ"6°~ÀqÓ"IˆLð  ˆGÜ% fÓ-ò \‘��5Ø—‘Ô3¸!ÌUÐSXË\ÔZÕ[ð\ô )Ø)ØôˆFô #4ÀÔ"NˆLÜ,°FÈÔVˆDä,°
Ò0O¼cÄ$Ç*Á*Ã,Ó>OÐY`ÐgkÔlˆOð !Ø(ØØ$4Ø ,Øñ.ˆOÔ*ð #Ð"øäò 	#ä#™gÑ?ØØ)Ø-Ø'ØØ)Ø /Ø-ð @ó 	ˆOð 7<ˆO×*Ñ*¨7Ñ3Ø"Ò"ð	#ús   ƒE)E- Å-1F!Æ F!c                 ó
   — ddgS )Nr.   r/   r;   )r   r   s     r    Ú"get_supported_cohere_rerank_paramsz8DeepinfraRerankConfig.get_supported_cohere_rerank_paramsÔ   s   € Ø˜Ð%Ð%r"   Úerror_messageÚstatus_codec                 ó&  — dd l }	 |}t        |t        «      r|j                  |«      }t        |t        «      r=|j                  d«      }t        |t        «      r
d|v r|d   }nt        |t        «      r|}t        |||¬«      ‚# t        $ r Y Œw xY w)Nr   ÚdetailÚerror)rt   Úmessager#   )r_   Ú
isinstancerf   ÚloadsrD   rb   ri   r   )r   rs   rt   r#   r_   Ú
error_datarv   s          r    Úget_error_classz%DeepinfraRerankConfig.get_error_class×   s”   € ãð	Ø&ˆJÜ˜-¬Ô-Ø!ŸZ™Z¨Ó6�
Ü˜*¤dÔ+à *§¡¨xÓ 8�Ü˜f¤dÔ+°¸6Ñ0AØ$*¨7¡O‘MÜ ¬Ô,Ø$*�Mô
 Ø#Ø!Øô
ð 	
øô	 ò 	áð	ús   †A0B Â	BÂBrC   )NNN)NNNTNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rf   rD   r!   r   Úobjectr+   ÚboolÚlistr   ÚintrA   rE   ÚhttpxÚResponser   ÚLiteLLMLoggingObjrk   rr   ÚHeadersr   r|   Ú__classcell__)rp   s   @r    r   r      so  ø„ ñð (,ñ	4à˜‘*ð4ð ð4ð  ™ð	4ð
 
ó4ðJ #Ø'+Ø6:ñ.àð.ð ð.ð �t‘ð	.ð
  ™ð.ð    V Ñ,¨tÑ3ð.ð 
ó.ðD +/Ø Ø(,Ø(,Ø)-Ø)-Ø"&ñ#>à ð#>ð ð#>ð ð	#>ð
 ð#>ð ˜˜d 3¨ 8™nÑ,Ñ-ð#>ð ! 4™Zð#>ð �T‰zð#>ð ˜#‘Y Ñ%ð#>ð  ™+ð#>ð   $™Jð#>ð   $™Jð#>ð ˜4‘Zð#>ð 
ó#>ðT '+ñ
,àð
,ð !%ð
,ð ð	
,ð
 ˜t™ð
,ð 
ó
,ð$ #ØØ "Ø!ñE#àðE#ð —n‘nðE#ð 'ð	E#ð
 'ðE#ð �t‘ðE#ð ðE#ð ðE#ð ðE#ð 
õE#ðN&¸ð &Àó &ð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfv÷ 
r"   r   )r€   Úcollections.abcr   Útypingr   r   r…   Úlitellm._uuidr   Ú*litellm.litellm_core_utils.litellm_loggingr   r‡   Ú+litellm.llms.base_llm.rerank.transformationr   r	   Úlitellm.secret_managers.mainr
   Úlitellm.types.rerankr   r   r   r   r   r   r   r;   r"   r    ú<module>r‘      s>   ðñõ $ß ã å Ý S÷õ 8÷÷ ôT
Ð,õ T
r"   