Ë
    uPêj\*  ã                   ó  — d dl Z d dlmZ d dlmZmZmZ d dlZd dl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 d d	lmZmZmZmZmZmZmZ d d
lmZ ddlmZ er	d dlm Z! e!Z"neZ" G d„ de	«      Z# G d„ de	«      Z$e%e#   Z& G d„ de«      Z'y)é    N)ÚMapping)ÚTYPE_CHECKINGÚAnyÚFinal)Ú	TypedDict)Úuuid)ÚBaseLLMException)ÚBaseRerankConfig)Úget_secret_str)ÚOptionalRerankParamsÚRerankBilledUnitsÚRerankResponseÚRerankResponseDocumentÚRerankResponseMetaÚRerankResponseResultÚRerankTokens)Útoken_counteré   ©ÚHuggingFaceError)ÚLoggingc                   ó6   — e Zd ZU dZeed<   eed<   edz  ed<   y)ÚHuggingFaceRerankResponseItemz:Type definition for HuggingFace rerank API response items.ÚindexÚscoreNÚtext)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__ÚfloatÚstr© ó    ús/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/huggingface/rerank/transformation.pyr   r   "   s   … ÙDàƒJØƒLØ
�‰*Ôr&   r   c                   ó   — e Zd ZdZy)ÚHuggingFaceRerankResponsez=Type definition for HuggingFace rerank API complete response.N)r   r   r   r    r%   r&   r'   r)   r)   *   s   „ ÚGr&   r)   c                   ó0  — e Zd Zde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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dz  defd„Z	 d$dedeez  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	 	 d'dedz  dedz  deedz  edz  f   fd#„Zy)(ÚHuggingFaceRerankConfigÚmodelÚapi_baseNÚreturnc                 ó¸   — |�|S t        j                  d«      �t        j                  dd«      S t        j                  d«      �t        j                  dd«      S y)NÚHF_API_BASEÚ ÚHUGGINGFACE_API_BASEz$https://api-inference.huggingface.co)ÚosÚgetenv)Úselfr,   r-   s      r'   Úget_api_basez$HuggingFaceRerankConfig.get_api_base5   sR   € ØÐØˆOÜ�Y‰Y�}Ó%Ð1Ü—9‘9˜]¨BÓ/Ð/Ü�Y‰YÐ-Ó.Ð:Ü—9‘9Ð3°RÓ8Ð8à9r&   Úoptional_paramsc                 óz   — | j                  ||¬«      }|j                  d«      }|j                  d«      s|› d�}|S )zc
        Get the complete URL for the API call, including the /rerank suffix if necessary.
        )r,   r-   ú/z/rerank)r6   ÚrstripÚendswith)r5   r-   r,   r7   Úbase_urls        r'   Úget_complete_urlz(HuggingFaceRerankConfig.get_complete_url?   sH   € ð ×$Ñ$¨5¸8Ð$ÓDˆð —?‘? 3Ó'ˆØ× Ñ  Ô+Ø"˜ 7Ð+ˆHàˆr&   c                 ó
   — g d¢S )N)ÚqueryÚ	documentsÚtop_nÚreturn_documentsr%   )r5   r,   s     r'   Ú"get_supported_cohere_rerank_paramsz:HuggingFaceRerankConfig.get_supported_cohere_rerank_paramsR   s   € ò
ð 	
r&   Únon_default_paramsÚdrop_paramsr?   r@   Úcustom_llm_providerrA   Úrank_fieldsrB   Úmax_chunks_per_docÚmax_tokens_per_docÚinstructionc                 óô   — i }|�j|j                  «       D ]W  \  }}|dk(  r|�||d<   Œ|dk(  r|�t        |t        «      r||d<   Œ0|dk(  r|�||d<   Œ=|dk(  r|�||d<   ŒJ|dk(  sŒP|€ŒS||d<   ŒY t        di |¤ŽS )Nr@   ÚtextsrB   Úreturn_textrA   r?   r%   )ÚitemsÚ
isinstanceÚboolr   )r5   rD   r,   rE   r?   r@   rF   rA   rG   rB   rH   rI   rJ   Úoptional_rerank_paramsÚkÚvs                   r'   Úmap_cohere_rerank_paramsz0HuggingFaceRerankConfig.map_cohere_rerank_paramsZ   s¹   € ð )+ÐØÐ)Ø*×0Ñ0Ó2ò 
8‘��1Ø˜Ò#¨¨Ø67Ð*¨7Ò3ØÐ,Ò,°°Ä:ÈaÔQUÔCVØ<=Ð*¨=Ò9Ø˜'’\ a mØ67Ð*¨7Ò3Ø˜+Ò%¨!¨-Ø67Ð*¨7Ò3Ø˜'“\ a¡mØ67Ð*¨7Ò3ð
8ô $Ñ=Ð&<Ñ=Ð=r&   ÚheadersÚapi_keyÚlitellm_paramsc                 óp   — | j                  ||¬«      \  }}dddœ}|rd|› �|d<   d|v r|d   |d<   i |¥|¥S )N)rV   r-   zapplication/json)Úacceptzcontent-typezBearer ÚAuthorization)Úget_api_credentials)r5   rU   r,   rV   r7   rW   r-   Údefault_headerss           r'   Úvalidate_environmentz,HuggingFaceRerankConfig.validate_environmenty   sj   € ð !×4Ñ4¸WÈxÐ4ÓXÑˆ�ð )Ø.ñ"
ˆñ
 Ø18¸¸	Ð/BˆO˜OÑ,à˜gÑ%Ø/6°Ñ/GˆO˜OÑ,à-�/Ð- WÐ-Ð-r&   rQ   c                 óp   — d|vrt        d«      ‚d|vrt        d«      ‚ddddœ}|j                  |«       |S )Nr?   z(query is required for HuggingFace rerankrL   z;Cohere 'documents' param is required for HuggingFace rerankFÚRight)Ú
raw_scoresÚtruncateÚtruncation_direction)Ú
ValueErrorÚupdate)r5   r,   rQ   rU   rW   Úrequest_bodys         r'   Útransform_rerank_requestz0HuggingFaceRerankConfig.transform_rerank_request’   sW   € ð Ð0Ñ0ÜÐGÓHÐHØÐ0Ñ0ÜÐZÓ[Ð[ð  ØØ$+ñ
ˆð 	×ÑÐ2Ô3àÐr&   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	           
      ób  — 	 |j                  «       }	|j                  dd«      }
	 t	        |	«      }t        ||¬«      }|j                  dd«      }|j                  dg «      }d}|D ]<  }t        |t        «      r	||d	z   z  }Œt        |t        «      sŒ-d|v sŒ2||d   d	z   z  }Œ> |d	z   |z   }
t        ||
¬«      }t        d¬«      }t        ||¬«      }t        ddi||¬«      }|j                  dd«      xs |j                  dd«      }|j                  dg «      }g }|	D ]ð  }|j                  d«      }|j                  d«      }|�|€Œ*t        ||¬«      }|r§|j                  dd«      }|rt        |¬«      |d<   nƒ|r�d|j                  dd«      cxk  rt        |«      k  r]n nZ||j                  d«         }t        |t        «      rt        |¬«      |d<   n&t        |t        «      rd|v rt        |d   ¬«      |d<   |j!                  |«       Œò t#        t	        t%        j&                  «       «      ||¬«      S # t        $ r- t        t        |dt	        |«      «      t        |dd«      ¬«      ‚w xY w# t        $ r2 |	rt        |	«      d
z  nd
}dt        «       v rt        |
«      dz  nd}Y �Œôw xY w)Nr   Ústatus_codeiô  ©Úmessagerl   r?   r1   )r,   r   rL   ú é
   Ú
input_texté   r   é   )Úsearch_units)Úinput_tokensÚoutput_tokensÚversionz1.0)Úapi_versionÚbilled_unitsÚtokensrM   FrB   r   r   )r   Úrelevance_score)r   Údocumentéÿÿÿÿ)ÚidÚresultsÚmeta)ÚjsonÚ	Exceptionr   Úgetattrr$   Úgetr   rO   ÚdictÚlenÚlocalsr   r   r   r   r   Úappendr   r   Úuuid4)r5   r,   rg   rh   ri   rV   rj   r7   rW   Úraw_response_jsonrq   Úresponse_textÚestimated_output_tokensr?   r@   Údocuments_textÚdocÚestimated_input_tokensÚ_billed_unitsÚ_tokensÚrerank_metaÚshould_return_documentsÚoriginal_documentsr   Úitemr   r   ÚresultÚtext_contents                                r'   Útransform_rerank_responsez1HuggingFaceRerankConfig.transform_rerank_response©   sÙ  € ð	ØFR×FWÑFWÓFYÐð "×%Ñ% g¨rÓ2ˆ
ð	\ä#&Ð'8Ó#9ˆMÜ&3¸%ÀmÔ&TÐ#ð (×+Ñ+¨G°RÓ8ˆEØ+×/Ñ/°¸Ó<ˆIð  ˆNØ ò 8�Ü˜c¤3Ô'Ø" c¨C¡iÑ/‘NÜ ¤TÕ*¨v¸ª}Ø" c¨&¡k°CÑ&7Ñ7‘Nð	8ð  ™ ~Ñ5ˆJÜ%2¸ÀZÔ%PÐ"ô  1¸aÔ@ˆÜ%Ð3IÐYpÔqˆÜ(°iÀÐ5GÐVcÐlsÔtˆð #/×"2Ñ"2°=À%Ó"HÒ"wÈL×L\ÑL\Ð]oÐqvÓLwÐØ$0×$4Ñ$4°W¸bÓ$AÐàˆØ%ò 	#ˆDà—H‘H˜WÓ%ˆEØ—H‘H˜WÓ%ˆEð ˆ}  Øô *°ÀuÔMˆFñ 'Ø#Ÿx™x¨°Ó3�ñ  Ü)?À\Ô)R�F˜:Ò&á'¨A°·±¸'À2Ó1FÔ,`ÌÐM_ÓI`Õ,`Ø,¨T¯X©X°gÓ->Ñ?�CÜ! #¤sÔ+Ü-CÈÔ-M˜˜zÒ*Ü# C¬Ô.°6¸S±=Ü-CÈÈVÉÔ-U˜˜zÑ*à�N‰N˜6Õ"ð7	#ô: Ü”4—:‘:“<Ó ØØô
ð 	
øôO ò 	Ü"Ü ¨f´c¸,Ó6GÓHÜ# L°-ÀÓEôð ð	ûô8 ò 	\áEV¤cÐ*;Ó&<¸rÒ&AÐ\^Ð#Ø<HÌFËHÑ<T¤S¨£_°qÒ%8ÐZ[Ó"ð	\ús)   ‚H: ¥A,I3 ÂI3 Â"I3 È:6I0É37J.Ê-J.Úerror_messagerl   c                 ó   — t        ||¬«      S )Nrm   r   )r5   r™   rl   rU   s       r'   Úget_error_classz'HuggingFaceRerankConfig.get_error_class  s   € Ü¨À;ÔOÐOr&   c                 ó¨   — |xs t         j                  xs t        d«      }|xs* t         j                  xs t        d«      xs t        d«      }||fS )aX  
        Get API key and base URL from multiple sources.
        Returns tuple of (api_key, api_base).

        Parameters:
            api_key: API key provided directly to this function, takes precedence over all other sources
            api_base: API base provided directly to this function, takes precedence over all other sources
        ÚHUGGINGFACE_API_KEYr0   r2   )ÚlitellmÚhuggingface_keyr   r-   )r5   rV   r-   Úfinal_api_keyÚfinal_api_bases        r'   r[   z+HuggingFaceRerankConfig.get_api_credentials  sV   € ð  'Òj¬'×*AÑ*AÒjÄ^ÐTiÓEjˆð Òsœ×(Ñ(Òs¬N¸=Ó,IÒsÌ^Ð\rÓMsð 	ð ˜nÐ,Ð,r&   )N)NNNTNNN)NNNN)NN)r   r   r   r$   r6   r…   r=   ÚlistrC   rP   r   r!   rT   r   Úobjectr]   r   rf   ÚhttpxÚResponser   ÚLoggingClassr˜   ÚHeadersr	   r›   Útupler[   r%   r&   r'   r+   r+   4   sç  „ ð: #ð :°°t±ð :Àó :ð (,ñ	à˜‘*ðð ðð  ™ð	ð
 
óð&
¸ð 
Àó 
ð +/Ø Ø(,Ø(,Ø)-Ø)-Ø"&ñ>à  4™Kð>ð ð>ð ð	>ð
 ð>ð ˜˜d 3¨ 8™nÑ,Ñ-ð>ð ! 4™Zð>ð �T‰zð>ð ˜#‘Y Ñ%ð>ð  ™+ð>ð   $™Jð>ð   $™Jð>ð ˜4‘Zð>ð 
ó>ðF #Ø'+Ø6:Ø#ñ.àð.ð ð.ð �t‘ð	.ð
  ™ð.ð    V Ñ,¨tÑ3ð.ð ˜‘*ð.ð 
ó.ð< '+ñàðð !5°tÑ ;ðð ð	ð
 ˜t™ðð 
óð: #ØØ "Ø!ñX
àðX
ð —n‘nðX
ð 'ð	X
ð
 "ðX
ð �t‘ðX
ð ðX
ð ðX
ð ðX
ð 
óX
ðtP¨Sð P¸sð PÈTÐTY×TaÑTaÑMað PÐfvó Pð
 #Ø#ñ-à�t‘ð-ð ˜‘*ð-ð 
ˆs�T‰z˜3 ™:Ð%Ñ	&ô	-r&   r+   )(r3   Úcollections.abcr   Útypingr   r   r   r¤   Útyping_extensionsr   rž   Úlitellm._uuidr   Ú)litellm.llms.base_llm.chat.transformationr	   Ú+litellm.llms.base_llm.rerank.transformationr
   Úlitellm.secret_managers.mainr   Úlitellm.types.rerankr   r   r   r   r   r   r   Úlitellm.utilsr   Úcommon_utilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   ÚLiteLLMLoggingObjr¦   r   r)   r¢   ÚHuggingFaceRerankResponseListr+   r%   r&   r'   ú<module>r¶      s„   ðÛ 	Ý #ß ,Ñ ,ã Ý 'ã Ý Ý FÝ HÝ 7÷÷ ñ õ (å +áÝWà$�Là€Lô Iô ôH 	ô Hð !%Ð%BÑ CÐ ôg-Ð.õ g-r&   