Ë
    uPêj·  ã                   óæ   — U d dl Z d dlZd dlmZmZmZ d dlZd dlmZm	Z	 er	d dl
mZ eZneZd dlmZ ddlmZ dd	lmZmZ  e j*                  e«      Zeed
<   dZeed<   dedefd„Z G d„ de«      Zy)é    N)ÚTYPE_CHECKINGÚAnyÚFinal)ÚAllMessageValuesÚChatCompletionRequest)ÚLogging)ÚBaseLLMExceptioné   )ÚOpenAIGPTConfigé   )ÚHuggingFaceErrorÚ!_fetch_inference_provider_mappingÚloggerzhttps://router.huggingface.coÚBASE_URLÚ	model_urlÚreturnc                 ó€   — | j                  d«      } | j                  d«      r| dz  } | j                  d«      s| dz  } | S )Nú/z/v1z/chat/completionsú/v1/chat/completions)ÚrstripÚendswith)r   s    úq/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/huggingface/chat/transformation.pyÚ_build_chat_completion_urlr      sO   € à× Ñ  Ó%€Ið ×Ñ˜%Ô ØÐ(Ñ(ˆ	ð ×ÑÐ1Ô2ØÐ+Ñ+ˆ	àÐó    c                   ó  — e Zd ZdZ	 	 ddededee   dedededz  d	edz  d
efd„Zdede	dee
j                  z  d
efd„Zdededz  d
edz  fd„Z	 dd	edz  dedz  dededededz  d
efd„Zdedee   dededed
efd„Zy)ÚHuggingFaceChatConfigzQ
    Reference: https://huggingface.co/docs/huggingface_hub/guides/inference
    NÚheadersÚmodelÚmessagesÚoptional_paramsÚlitellm_paramsÚapi_keyÚapi_baser   c                 ó.   — ddi}|�d|› �|d<   i |¥|¥}|S )Nzcontent-typezapplication/jsonzBearer ÚAuthorization© )	Úselfr   r   r   r    r!   r"   r#   Údefault_headerss	            r   Úvalidate_environmentz*HuggingFaceChatConfig.validate_environment.   s>   € ð Ð.ð"
ˆð ÐØ18¸¸	Ð/BˆO˜OÑ,à0�WÐ0 Ð0ˆàˆr   Úerror_messageÚstatus_codec                 ó   — t        |||¬«      S )N)r+   Úmessager   )r   )r'   r*   r+   r   s       r   Úget_error_classz%HuggingFaceChatConfig.get_error_classB   s   € Ü¨KÀÐX_Ô`Ð`r   Úbase_urlc                 óŽ   — |j                  d«      r|}|S |€-t        j                  d«      xs t        j                  dd«      }|S )z’
        Get the API base for the Huggingface API.

        Do not add the chat/embedding/rerank extension here. Let the handler do this.
        ©zhttp://zhttps://ÚHF_API_BASEÚHUGGINGFACE_API_BASEÚ )Ú
startswithÚosÚgetenv)r'   r   r/   s      r   Úget_base_urlz"HuggingFaceChatConfig.get_base_urlE   sL   € ð ×ÑÐ3Ô4ØˆHð ˆð ÐÜ—y‘y Ó/ÒX´2·9±9Ð=SÐUWÓ3XˆHØˆr   Ústreamc                 óú  — |�|}t        |«      }nÙt        j                  d«      st        j                  d«      r?t        t        j                  d«      «      xs t        t        j                  d«      «      }np|j	                  d«      r|}t        |«      }nQd}|j                  dd«      \  }}	d|	v r6|}
|
dk(  r	|
› d|› d	�}n|
d
k(  r|
› d�}n|
dk(  r|
› d�}n|
› d	�}t        › d|› �}|j                  d«      }|S )zr
        Get the complete URL for the API call.
        For provider-specific routing through huggingface
        r2   r3   r1   z1https://router.huggingface.co/v1/chat/completionsr   é   zhf-inferencez/models/r   Únovitaz/v3/openai/chat/completionszfireworks-aiz/inference/v1/chat/completions)r   r6   r7   Ústrr5   Úsplitr   r   )r'   r#   r"   r   r    r!   r9   Úcomplete_urlÚ
first_partÚ	remainingÚproviderÚroutes               r   Úget_complete_urlz&HuggingFaceChatConfig.get_complete_urlQ   s  € ð ÐØ#ˆLÜ5°lÓC‰LÜ�Y‰Y�}Ô%¬¯©Ð3IÔ)JÜœrŸy™y¨Ó7Ó8Òb¼CÄÇ	Á	ÐJ`Ó@aÓ<b‰LØ×ÑÐ5Ô6Ø ˆLÜ5°lÓC‰Lð OˆLØ$)§K¡K°°QÓ$7Ñ!ˆJ˜	Ø�iÑØ",�Ø˜~Ò-Ø'˜j¨°°Ð7KÐL‘EØ Ò)Ø'˜jÐ(CÐD‘EØ Ò/Ø'˜jÐ(FÐG‘Eà'˜jÐ(<Ð=�EÜ"* ¨1¨U¨GÐ4�à#×*Ñ*¨3Ó/ˆØÐr   c                 óÒ  — |j                  d«      rt        t        d||dœ|¤Ž«      S d|v r't        j	                  d«       |j                  dd «       |j                  dd«      \  }}|}d|v rP|}	|}
t        |
«      }|	|vrt        d|
› d|	› �d	i ¬
«      ‚||	   }|d   dk(  rt        j	                  d|
|	«       |d   }| j                  ||¬«      }t        t        d||dœ|¤Ž«      S )Nr#   )r   r   Úmax_retriesz3`max_retries` is not supported. It will be ignored.r   r;   zModel z is not supported for provider i”  )r-   r+   r   ÚstatusÚstagingzJModel %s is in staging mode for provider %s. Meant for test purposes only.Ú
providerId)r   r   r&   )
ÚgetÚdictr   r   ÚwarningÚpopr>   r   r   Ú_transform_messages)r'   r   r   r    r!   r   r@   rA   Úmapped_modelrB   Úmodel_idÚprovider_mappings               r   Útransform_requestz'HuggingFaceChatConfig.transform_request{   s#  € ð ×Ñ˜jÔ)ÜÔ-Ð`°EÀHÑ`ÐP_Ñ`ÓaÐaØ˜OÑ+Ü�N‰NÐPÔQØ×Ñ ¨tÔ4Ø %§¡¨C°Ó 3Ñˆ
�IØˆØ�)ÑØ(ˆHØ'ˆHÜ@ÀÓJÐØÐ/Ñ/Ü&Ø$ X JÐ.MÈhÈZÐXØ #Øôð ð
  0°Ñ9ÐØ Ñ)¨YÒ6Ü—‘Ø`ÐbjÐltôð ,¨LÑ9ˆLà×+Ñ+°XÀ\Ð+ÓRˆÜÔ)Ðc°ÀxÑcÐSbÑcÓdÐdr   )NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   r=   Úlistr   r)   ÚintÚhttpxÚHeadersr	   r.   r8   ÚboolrD   rR   r&   r   r   r   r   )   sl  „ ñð #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð(a¨Sð a¸sð aÈTÐTY×TaÑTaÑMað aÐfvó að
 #ð 
°°t±ð 
ÀÀdÁ
ó 
ð& #ñ(à˜‘*ð(ð �t‘ð(ð ð	(ð
 ð(ð ð(ð �t‘ð(ð 
ó(ðT!eàð!eð Ð'Ñ(ð!eð ð	!eð
 ð!eð ð!eð 
ô!er   r   )Úloggingr6   Útypingr   r   r   rY   Úlitellm.types.llms.openair   r   Ú*litellm.litellm_core_utils.litellm_loggingr   ÚLiteLLMLoggingObjÚLoggingClassÚ)litellm.llms.base_llm.chat.transformationr	   Úopenai.chat.gpt_transformationr   Úcommon_utilsr   r   Ú	getLoggerrS   r   Ú__annotations__r   r=   r   r   r&   r   r   ú<module>rg      st   ðÜ Û 	ß ,Ñ ,ã ç MáÝWà$�Là€Lå Få =ß Nà!�×!Ñ! (Ó+€ˆÓ +à1€ˆ%Ó 1ð¨#ð °#ó ôse˜Oõ ser   