Ë
    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 ddlmZmZmZmZ dd	lmZ d
dlmZ  G d„ de
«      Zy)zk
Transformation logic for Voyage AI's /v1/rerank endpoint.

Docs - https://docs.voyageai.com/docs/reranker
é    )ÚMapping)ÚAnyÚFinalN)ÚLiteLLMLoggingObj)ÚBaseRerankConfig)Úget_secret_str)ÚRerankBilledUnitsÚRerankResponseÚRerankResponseMetaÚRerankTokens)Ú	ModelInfoé   ©ÚVoyageErrorc                   óþ  — 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j                  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d"ed#e	deej4                  z  fd$„Zy)(ÚVoyageRerankConfigÚmodelÚreturnc                 ó
   — g d¢S )N)ÚqueryÚ	documentsÚtop_nÚreturn_documents© )Úselfr   s     ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/voyage/rerank/transformation.pyÚ"get_supported_cohere_rerank_paramsz5VoyageRerankConfig.get_supported_cohere_rerank_params   s   € ÚBÐBó    NÚnon_default_paramsÚdrop_paramsr   r   Úcustom_llm_providerr   Úrank_fieldsr   Úmax_chunks_per_docÚmax_tokens_per_docÚinstructionc                 ó,   — ||dœ}|�||d<   |	�|	|d<   |S )N)r   r   Útop_kr   r   )r   r   r   r    r   r   r!   r   r"   r   r#   r$   r%   Úoptional_paramss                 r   Úmap_cohere_rerank_paramsz+VoyageRerankConfig.map_cohere_rerank_params   s8   € ð  <AÈyÑ1YˆØÐØ',ˆO˜GÑ$ØÐ'Ø2BˆOÐ.Ñ/ð Ðr   Úapi_baser(   c                 óŠ   — |€y|j                  d«      }|j                  d«      s|j                  d«      r|› d�}|S |› d�}|S )Nz"https://api.voyageai.com/v1/rerankú/z
/v1/rerankz/v1z/rerank)ÚrstripÚendswith)r   r*   r   r(   s       r   Úget_complete_urlz#VoyageRerankConfig.get_complete_url7   s]   € ð ÐØ7Ø—?‘? 3Ó'ˆØ× Ñ  Ô.Ø× Ñ  Ô'Ø&˜Z wÐ/�ð ˆð '˜Z zÐ2�Øˆr   Úoptional_rerank_paramsÚheadersÚlitellm_paramsc                 ó   — d|i|¥S )Nr   r   )r   r   r0   r1   r2   s        r   Útransform_rerank_requestz+VoyageRerankConfig.transform_rerank_requestG   s   € ð ˜Ð9Ð"8Ð9Ð9r   Úraw_responseÚmodel_responseÚlogging_objÚapi_keyÚrequest_datac	                 óÔ  — |j                   dk7  r!t        |j                  |j                   ¬«      ‚|j                  |j                  ¬«       	 |j	                  «       }	|	j                  d«      }
|
€t        d|	› �«      ‚g }|
D ]H  }|d   |d   d	œ}d
|v r&t        |d
   t        «      rd|d
   i|d
<   n|d
   |d
<   |j                  |«       ŒJ |	j                  di «      }|j                  dd«      }t        |¬«      }t        |d¬«      }t        ||¬«      }t        |	j                  dd|› �«      ||¬«      S # t
        $ r% t        d|j                  › �|j                   ¬«      ‚w xY w)NéÈ   )ÚmessageÚstatus_code)Úoriginal_responsezFailed to parse response: Údataz!No results found in the response=ÚindexÚrelevance_score)r@   rA   ÚdocumentÚtextÚusageÚtotal_tokensr   )rE   )Úinput_tokensÚoutput_tokens)Úbilled_unitsÚtokensÚidzvoyage-rerank-)rJ   ÚresultsÚmeta)r=   r   rC   Ú	post_callÚjsonÚ	ExceptionÚgetÚ
ValueErrorÚ
isinstanceÚstrÚappendr	   r   r   r
   )r   r   r5   r6   r7   r8   r9   r(   r2   Ú_json_responseÚ_resultsÚtransformed_resultsÚresultÚtransformed_resultrD   rE   Ú_billed_unitsÚ_tokensÚrerank_metas                      r   Útransform_rerank_responsez,VoyageRerankConfig.transform_rerank_responseP   s¦  € ð ×#Ñ# sÒ*Ü l×&7Ñ&7À\×E]ÑE]Ô^Ð^à×Ñ°×0AÑ0AÐÔBð	Ø$0×$5Ñ$5Ó$7ˆNð .<×-?Ñ-?ÀÓ-GˆØÐÜÐ@ÀÐ@PÐQÓRÐRð &(ÐØò 
	;ˆFà ™Ø#)Ð*;Ñ#<ñ2Ðð ˜VÑ#Ü˜f ZÑ0´#Ô6Ø6<¸fÀZÑ>PÐ5QÐ& zÒ2à5;¸JÑ5GÐ& zÑ2Ø×&Ñ&Ð'9Õ:ð
	;ð &×)Ñ)¨'°2Ó6ˆØ#Ÿi™i¨¸Ó:ˆÜ0¸lÔKˆÜ%°<ÈqÔQˆÜ/¸]ÐSZÔ[ˆäØ×!Ñ! $¨.¸¸Ð(@ÓAØ'Øô
ð 	
øô? ò 	ÜØ4°\×5FÑ5FÐ4GÐHØ(×4Ñ4ôð ð	ús   ÁD9 Ä9.E'c                 ó`   — |€t        d«      xs t        d«      }|€t        d«      ‚d|› �ddœS )NÚVOYAGE_API_KEYÚVOYAGE_AI_API_KEYzWVoyage AI API key is required. Set via `api_key` parameter or `VOYAGE_API_KEY` env var.zBearer zapplication/json)ÚAuthorizationzcontent-type)r   rQ   )r   r1   r   r8   r(   r2   s         r   Úvalidate_environmentz'VoyageRerankConfig.validate_environment‡   sG   € ð ˆ?Ü$Ð%5Ó6Ò]¼.ÐI\Ó:]ˆGØˆ?ÜÐvÓwÐwà& w iÐ0Ø.ñ
ð 	
r   rH   Ú
model_infoc                 óZ   — |�d|vs|d   �|€y|j                  d«      }|€y|d   |z  dfS )NÚinput_cost_per_token)ç        rf   rE   rf   )rP   )r   r   r!   rH   rc   rE   s         r   Úcalculate_rerank_costz(VoyageRerankConfig.calculate_rerank_cost˜   sV   € ð ÐØ%¨ZÑ7ØÐ0Ñ1Ð9ØÐ#àØ*×.Ñ.¨~Ó>ˆØÐØØÐ0Ñ1°LÑ@À#ÐEÐEr   Úerror_messager=   c                 ó   — t        |||¬«      S )N)r<   r=   r1   r   )r   rh   r=   r1   s       r   Úget_error_classz"VoyageRerankConfig.get_error_class«   s   € Ü =¸kÐSZÔ[Ð[r   )NNNTNNN)N)NNN)Ú__name__Ú
__module__Ú__qualname__rS   Úlistr   ÚdictÚboolr   Úintr)   r/   r4   ÚhttpxÚResponser
   r   r]   r   Úobjectrb   r	   r   ÚtupleÚfloatrg   ÚHeadersrj   r   r   r   r   r      s¸  „ ðC¸ð CÀó Cð +/Ø Ø(,Ø(,Ø)-Ø)-Ø"&ñà ðð ðð ð	ð
 ðð ˜˜d 3¨ 8™nÑ,Ñ-ðð ! 4™Zðð �T‰zðð ˜#‘Y Ñ%ðð  ™+ðð   $™Jðð   $™Jðð ˜4‘Zðð 
óð: (,ñ	à˜‘*ðð ðð  ™ð	ð
 
óð* '+ñ:àð:ð !%ð:ð ð	:ð
 ˜t™ð:ð 
ó:ð #ØØ "Ø!ñ5
àð5
ð —n‘nð5
ð 'ð	5
ð
 'ð5
ð �t‘ð5
ð ð5
ð ð5
ð ð5
ð 
ó5
ðv #Ø'+Ø6:ñ
àð
ð ð
ð �t‘ð	
ð
  ™ð
ð    V Ñ,¨tÑ3ð
ð 
ó
ð( +/Ø15Ø'+ñFàðFð ! 4™ZðFð (¨$Ñ.ð	Fð
  Ñ$ðFð 
ˆu�eˆ|Ñ	óFð&\¨Sð \¸sð \ÈTÐTY×TaÑTaÑMaô \r   r   )Ú__doc__Úcollections.abcr   Útypingr   r   rr   Ú)litellm.llms.base_llm.chat.transformationr   Ú+litellm.llms.base_llm.rerank.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.rerankr	   r
   r   r   Úlitellm.types.utilsr   Úembedding.transformationr   r   r   r   r   ú<module>r�      sA   ðñõ $ß ã å GÝ HÝ 7÷ó õ *å 2ôR\Ð)õ R\r   