Ë
    uPêjG  ã                   ó–   — d Z ddlmZ ddlmZmZ ddlmZ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mZmZ dd	lmZ  G d
„ de«      Zy)z»
Transformation logic from Cohere's /v1/rerank format to Jina AI's  `/v1/rerank` format.

Why separate file? Make it easy to see how transformation works

Docs - https://jina.ai/reranker
é    )ÚMapping)ÚAnyÚFinal)ÚURLÚResponse)Úuuid)ÚLiteLLMLoggingObj)ÚBaseRerankConfig)ÚOptionalRerankParamsÚRerankBilledUnitsÚRerankResponseÚRerankResponseMetaÚRerankTokens)Ú	ModelInfoc                   ó¼  — e Zd Zde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z  de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dedededz  dedede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z  dedz  d edz  deeef   f
d!„Zy)%ÚJinaAIRerankConfigÚmodelÚreturnc                 ó
   — g d¢S )N)ÚqueryÚtop_nÚ	documentsÚreturn_documents© )Úselfr   s     úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/jina_ai/rerank/transformation.pyÚ"get_supported_cohere_rerank_paramsz5JinaAIRerankConfig.get_supported_cohere_rerank_params   s   € ò
ð 	
ó    NÚnon_default_paramsÚdrop_paramsr   r   Úcustom_llm_providerr   Úrank_fieldsr   Úmax_chunks_per_docÚmax_tokens_per_docÚinstructionc                 ó”   — i }| j                  |«      }|j                  «       D ]  \  }}||v sŒ|||<   Œ t        t        di |¤Ž«      S )Nr   )r   ÚitemsÚdictr   )r   r   r   r    r   r   r!   r   r"   r   r#   r$   r%   Úoptional_paramsÚsupported_paramsÚkÚvs                    r   Úmap_cohere_rerank_paramsz+JinaAIRerankConfig.map_cohere_rerank_params$   sh   € ð "$ˆØ"&×"IÑ"IÈ%Ó"PÐØ&×,Ñ,Ó.ò 	'‰DˆAˆqØÐ$Ò$Ø%&� Ò"ð	'ô Ü ñ Ø!ñó
ð 	
r   Úapi_baser)   c                 ó\   — d}|€yt        |«      }t        |j                  |¬«      «      }|S )Nz
/v1/rerankzhttps://api.jina.ai/v1/rerank)Úpath)r   ÚstrÚ	copy_with)r   r.   r   r)   Ú	base_pathÚbaseÚcleaned_bases          r   Úget_complete_urlz#JinaAIRerankConfig.get_complete_url>   s6   € ð (ˆ	àÐØ2Ü˜(“mˆä! $§.¡.°i .Ó"@ÓAˆàÐr   Úoptional_rerank_paramsÚheadersÚlitellm_paramsc                 ó   — d|i|¥S )Nr   r   )r   r   r7   r8   r9   s        r   Útransform_rerank_requestz+JinaAIRerankConfig.transform_rerank_requestN   s   € ð ˜Ð9Ð"8Ð9Ð9r   Úraw_responseÚmodel_responseÚlogging_objÚapi_keyÚrequest_datac	                 óˆ  — |j                   dk7  rt        |j                  «      ‚|j                  |j                  ¬«       |j	                  «       }	t        di |	j                  di «      ¤Ž}
t        di |	j                  di «      ¤Ž}t        |
|¬«      }|	j                  d«      }|€t        d|	› �«      ‚g }|D ]L  }|d   |d   d	œ}d
|v rt        |d
   t        «      rd|d
   i|d
<   nd
|v r|d
   |d
<   |j                  |«       ŒN t        |	j                  d«      xs t        t        j                  «       «      ||¬«      S )NéÈ   )Úoriginal_responseÚusage)Úbilled_unitsÚtokensÚresultsz!No results found in the response=ÚindexÚrelevance_score)rH   rI   ÚdocumentÚtextÚid)rL   rG   Úmetar   )Ústatus_codeÚ	ExceptionrK   Ú	post_callÚjsonr   Úgetr   r   Ú
ValueErrorÚ
isinstancer1   Úappendr   r   Úuuid4)r   r   r<   r=   r>   r?   r@   r)   r9   Ú_json_responseÚ_billed_unitsÚ_tokensÚrerank_metaÚ_resultsÚtransformed_resultsÚresultÚtransformed_results                    r   Útransform_rerank_responsez,JinaAIRerankConfig.transform_rerank_responseW   si  € ð ×#Ñ# sÒ*Ü˜L×-Ñ-Ó.Ð.à×Ñ°×0AÑ0AÐÔBà ,× 1Ñ 1Ó 3ˆä0ÑS°>×3EÑ3EÀgÈrÓ3RÑSˆÜ%ÑH¨×(:Ñ(:¸7ÀBÓ(GÑHˆÜ/¸]ÐSZÔ[ˆà-;×-?Ñ-?À	Ó-JˆàÐÜÐ@ÀÐ@PÐQÓRÐRð
 &(ÐØò 	;ˆFà ™Ø#)Ð*;Ñ#<ñ"Ðð
 ˜VÑ#¬
°6¸*Ñ3EÄsÔ(KØ28¸&ÀÑ:LÐ1MÐ" :Ò.Ø˜vÑ%à17¸
Ñ1CÐ" :Ñ.Ø×&Ñ&Ð'9Õ:ð	;ô Ø×!Ñ! $Ó'Ò<¬3¬t¯z©z«|Ó+<Ø'Øô
ð 	
r   c                 ó.   — |€t        d«      ‚ddd|› �dœS )NzXapi_key is required. Set via `api_key` parameter or `JINA_API_KEY` environment variable.zapplication/jsonzBearer )Úacceptzcontent-typeÚauthorization)rS   )r   r8   r   r?   r)   r9   s         r   Úvalidate_environmentz'JinaAIRerankConfig.validate_environment‰   s/   € ð ˆ?ÜÐwÓxÐxà(Ø.Ø& w iÐ0ñ
ð 	
r   rE   Ú
model_infoc                 ó^   — |�d|vs|d   �|€y|j                  d«      }|€y|d   |z  }|dfS )zG
        Jina AI reranker is priced at $0.000000018 per token.
        Úinput_cost_per_token)ç        rg   Útotal_tokensrg   )rR   )r   r   r!   rE   rd   rh   Ú
input_costs          r   Úcalculate_rerank_costz(JinaAIRerankConfig.calculate_rerank_cost™   sZ   € ð ÐØ%¨ZÑ7ØÐ0Ñ1Ð9ØÐ#àà*×.Ñ.¨~Ó>ˆØÐØà&Ð'=Ñ>ÀÑMˆ
Ø˜3ˆÐr   )NNNTNNN)N)NNN)Ú__name__Ú
__module__Ú__qualname__r1   Úlistr   r(   Úboolr   Úintr-   r6   r;   r   r   r	   r_   r   Úobjectrc   r   r   ÚtupleÚfloatrj   r   r   r   r   r      s�  „ ð
¸ð 
Àó 
ð +/Ø Ø(,Ø(,Ø)-Ø)-Ø"&ñ
à ð
ð ð
ð ð	
ð
 ð
ð ˜˜d 3¨ 8™nÑ,Ñ-ð
ð ! 4™Zð
ð �T‰zð
ð ˜#‘Y Ñ%ð
ð  ™+ð
ð   $™Jð
ð   $™Jð
ð ˜4‘Zð
ð 
ó
ð< (,ñ	à˜‘*ðð ðð  ™ð	ð
 
óð* '+ñ:àð:ð !%ð:ð ð	:ð
 ˜t™ð:ð 
ó:ð #ØØ "Ø!ñ0
àð0
ð ð0
ð 'ð	0
ð
 'ð0
ð �t‘ð0
ð ð0
ð ð0
ð ð0
ð 
ó0
ðl #Ø'+Ø6:ñ
àð
ð ð
ð �t‘ð	
ð
  ™ð
ð    V Ñ,¨tÑ3ð
ð 
ó
ð& +/Ø15Ø'+ñàðð ! 4™Zðð (¨$Ñ.ð	ð
  Ñ$ðð 
ˆu�eˆ|Ñ	ôr   r   N)Ú__doc__Úcollections.abcr   Útypingr   r   Úhttpxr   r   Úlitellm._uuidr   Ú)litellm.llms.base_llm.chat.transformationr	   Ú+litellm.llms.base_llm.rerank.transformationr
   Úlitellm.types.rerankr   r   r   r   r   Úlitellm.types.utilsr   r   r   r   r   ú<module>r}      s<   ðñõ $ß ç å Ý GÝ H÷õ õ *ôUÐ)õ Ur   