Ë
    Q^(h~  ã                   ó\  — d dl 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 d dlmZmZmZmZ d dlmZmZ d d	lmZmZmZmZ  G d
„ de«      Z G d„ de«      Z G d„ de«      Zdedefd„Z ed¬«      deeee   f   fd„«       Z  ed¬«      dededdfd„«       Z! G d„ de«      Z"y)é    N)Ú	lru_cache)ÚPath)ÚAnyÚDictÚOptionalÚUnion)Ú	constants)ÚInferenceProviderMapping)ÚRequestParametersÚ_b64_encodeÚ_bytes_to_dictÚ_open_as_binary)ÚTaskProviderHelperÚfilter_none)Úbuild_hf_headersÚget_sessionÚ	get_tokenÚhf_raise_for_statusc            	       ó†   ‡ — e Zd ZdZdefˆ fd„Zdee   defd„Zdee   defd„Z	ded	edefd
„Z
dedededee   fd„Zˆ xZS )ÚHFInferenceTaskz&Base class for HF Inference API tasks.Útaskc                 óf   •— t         ‰| �  dt        j                  j	                  d¬«      |¬«       y )Núhf-inference©Úprovider)r   Úbase_urlr   )ÚsuperÚ__init__r	   ÚINFERENCE_PROXY_TEMPLATEÚformat)Úselfr   Ú	__class__s     €úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/hf_inference.pyr   zHFInferenceTask.__init__   s2   ø€ Ü‰ÑØ#Ü×7Ñ7×>Ñ>ÈÐ>ÓWØð 	õ 	
ó    Úapi_keyÚreturnc                 ó   — |xs
 t        «       S ©N)r   )r!   r%   s     r#   Ú_prepare_api_keyz HFInferenceTask._prepare_api_key   s   € àÒ%œ)›+Ð%r$   Úmodelc                 ó<  — |�*|j                  d«      rt        ||| j                  d¬«      S |�|n"t        «       j	                  | j                  «      }|€t        d| j                  › d�«      ‚t        || j                  «       t        ||| j                  d¬«      S )N©zhttp://zhttps://Úlive)Ú
providerIdÚhf_model_idr   ÚstatuszTask z€ has no recommended model for HF Inference. Please specify a model explicitly. Visit https://huggingface.co/tasks for more info.)Ú
startswithr
   r   Ú_fetch_recommended_modelsÚgetÚ
ValueErrorÚ_check_supported_task)r!   r*   Úmodel_ids      r#   Ú_prepare_mapping_infoz%HFInferenceTask._prepare_mapping_info   s¤   € ØÐ ×!1Ñ!1Ð2IÔ!JÜ+°uÈ%ÐVZ×V_ÑV_ÐhnÔoÐoØ!Ð-‘5Ô3LÓ3N×3RÑ3RÐSW×S\ÑS\Ó3]ˆØÐÜØ˜Ÿ	™	�{ð #Qð Qóð ô 	˜h¨¯	©	Ô2Ü'°8ÈÐX\×XaÑXaÐjpÔqÐqr$   Úmapped_modelc                 ó¢   — |j                  d«      r|S | j                  dv r| j                  › d|› d| j                  › �S | j                  › d|› �S )Nr,   ©úfeature-extractionzsentence-similarityú/models/z
/pipeline/)r1   r   r   )r!   r%   r8   s      r#   Ú_prepare_urlzHFInferenceTask._prepare_url'   sb   € à×"Ñ"Ð#:Ô;ØÐð �y‰yÐIÑIð �}‰}ˆo˜X l ^°:¸d¿i¹i¸[ÐIð	
ð
 —M‘M�? (¨<¨.Ð9ð	
r$   ÚinputsÚ
parametersÚprovider_mapping_infoc                 óÈ   — t        |t        «      rt        d| j                  › d�«      ‚t        |t        «      rt        d| j                  › d|› d�«      ‚|t        |«      dœS )Nz!Unexpected binary input for task ú.zUnexpected path input for task z (got ú)©r>   r?   )Ú
isinstanceÚbytesr4   r   r   r   ©r!   r>   r?   r@   s       r#   Ú_prepare_payload_as_dictz(HFInferenceTask._prepare_payload_as_dict3   sb   € ô �fœeÔ$ÜÐ@ÀÇÁÀÈ1ÐMÓNÐNÜ�fœdÔ#ÜÐ>¸t¿y¹y¸kÈÐPVÈxÐWXÐYÓZÐZØ ´¸JÓ0GÑHÐHr$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   r)   r
   r7   r=   r   r   rH   Ú__classcell__©r"   s   @r#   r   r      sŒ   ø„ Ù0ð
˜Sõ 
ð&¨°©ð &¸#ó &ð
r¨8°C©=ð 
rÐ=Uó 
rð

 Cð 

°sð 

¸só 

ðIØðIØ'+ðIØD\ðIà	�$‰÷Ir$   r   c                   óR   — e Zd Zdedededee   fd„Zdedededee   dee   f
d„Z	y)	ÚHFInferenceBinaryInputTaskr>   r?   r@   r&   c                  ó   — y r(   © rG   s       r#   rH   z3HFInferenceBinaryInputTask._prepare_payload_as_dict>   s   € ð r$   Úextra_payloadc                 ó  — t        |j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}«      }|xs i }t        |«      dkD  xs t        |«      dkD  }t        |t        t
        f«      st        |t        «      st        d|› �«      ‚|s9t        |«      5 }t        |t        «      r|n|j                  «       }	|	cd d d «       S t        j                  t        |«      |dœ|¥«      j                  d«      S c c}}w # 1 sw Y   ŒAxY w)Nr   z5Expected binary inputs or a local path or a URL. Got rD   zutf-8)r   ÚitemsÚlenrE   rF   r   rM   r4   r   ÚreadÚjsonÚdumpsr   Úencode)
r!   r>   r?   r@   rT   ÚkÚvÚhas_parametersÚdataÚdata_as_bytess
             r#   Ú_prepare_payload_as_bytesz4HFInferenceBinaryInputTask._prepare_payload_as_bytesC   sø   € ô !°:×3CÑ3CÓ3E×!W©4¨1¨aÈÉ ! Q¡$Ó!WÓXˆ
Ø%Ò+¨ˆÜ˜Z›¨1Ñ,ÒF´°MÓ0BÀQÑ0Fˆô ˜&¤5¬$ -Ô0¼ÀFÌCÔ9PÜÐTÐU[ÐT\Ð]Ó^Ð^ñ Ü  Ó(ð %¨DÜ(2°4¼Ô(?¡ÀTÇYÁYÃ[�Ø$÷%ñ %ô
 �z‰z¤[°Ó%8È
ÑdÐVcÐdÓe×lÑlÐmtÓuÐuùó "X÷%ð %ús   ™
C6
¤C6
Â$C<Ã<DN)
rI   rJ   rK   r   r   r
   r   rH   rF   ra   rS   r$   r#   rQ   rQ   =   sn   „ ðØðØ'+ðØD\ðà	�$‰óð
vàðvð ðvð  8ð	vð
   ‘~ðvð 
�%‰ôvr$   rQ   c            	       óP   ‡ — e Zd Zˆ fd„Zdedededee   fd„Zde	de	de	fd	„Z
ˆ xZS )
ÚHFInferenceConversationalc                 ó$   •— t         ‰| �  d«       y )NÚconversational©r   r   ©r!   r"   s    €r#   r   z"HFInferenceConversational.__init__]   s   ø€ Ü‰ÑÐ)Õ*r$   r>   r?   r@   r&   c                 ó’   — |j                   }|j                  d«      xs |}|�|j                  d«      rd}i t        |«      ¥||dœ¥S )Nr*   r,   Údummy)r*   Úmessages)Úprovider_idr3   r1   r   )r!   r>   r?   r@   r8   Úpayload_models         r#   rH   z2HFInferenceConversational._prepare_payload_as_dict`   sR   € ð -×8Ñ8ˆØ"Ÿ™ wÓ/Ò?°<ˆàÐ  M×$<Ñ$<Ð=TÔ$UØ#ˆMàV”+˜jÓ)ÐV°MÈvÒVÐVr$   r%   r8   c                 óˆ   — |j                  d«      r|n$t        j                  j                  d¬«      › d|› �}t	        |«      S )Nr,   r   r   r<   )r1   r	   r   r    Ú_build_chat_completion_url)r!   r%   r8   r   s       r#   r=   z&HFInferenceConversational._prepare_urlk   sP   € ð ×&Ñ&Ð'>Ô?ñ ä×6Ñ6×=Ñ=À~Ð=ÓVÐWÐW_Ð`lÐ_mÐnð 	ô
 *¨(Ó3Ð3r$   )rI   rJ   rK   r   r   r   r
   r   rH   rM   r=   rN   rO   s   @r#   rc   rc   \   sP   ø„ ô+ð	WØð	WØ'+ð	WØD\ð	Wà	�$‰ó	Wð4 Cð 4°sð 4¸s÷ 4r$   rc   Ú	model_urlr&   c                 ó€   — | j                  d«      } | j                  d«      r| dz  } | j                  d«      s| dz  } | S )Nú/z/v1z/chat/completionsz/v1/chat/completions)ÚrstripÚendswith)ro   s    r#   rn   rn   t   sO   € à× Ñ  Ó%€Ið ×Ñ˜%Ô ØÐ(Ñ(ˆ	ð ×ÑÐ1Ô2ØÐ+Ñ+ˆ	àÐr$   é   )Úmaxsizec                  ó  — t        «       j                  t        j                  › d�t	        «       ¬«      } t        | «       | j                  «       j                  «       D ��ci c]  \  }}|t        t        |d   «      d «      “Œ  c}}S c c}}w )Nz
/api/tasks)ÚheadersÚwidgetModels)
r   r3   r	   ÚENDPOINTr   r   rY   rV   ÚnextÚiter)Úresponser   Údetailss      r#   r2   r2   ƒ   ss   € ä‹}× Ñ ¤I×$6Ñ$6Ð#7°zÐ!BÔL\ÓL^Ð Ó_€HÜ˜Ô!ØQY×Q^ÑQ^ÓQ`×QfÑQfÓQh×iÁÀÀgˆD”$”t˜G NÑ3Ó4°dÓ;Ñ;ÓiÐiùÓis   Á!#Br*   r   c                 ó‚  — ddl m}  |«       j                  | «      }|j                  }|j                  xs g }d|v }|dv r |dk(  r|ry |dk(  ry t        d| › d|› d�«      ‚|d	k(  r|dk(  ry t        d| › d|› d�«      ‚|d
k(  r|r|dk(  ry t        d«      ‚|dv r	|dv r||v ry ||k7  rt        d| › d|› d|› d|› d�	«      ‚y )Nr   )ÚHfApire   )útext-generationre   r€   zModel 'z' doesn't support task 'z'.ztext2text-generationzimage-text-to-textz<Non-conversational image-text-to-text task is not supported.r:   z'. Supported tasks: 'z	', got: 'ú')Úhuggingface_hub.hf_apir   Ú
model_infoÚpipeline_tagÚtagsr4   )r*   r   r   rƒ   r„   r…   Úis_conversationals          r#   r5   r5   Š   s.  € å,á“×#Ñ# EÓ*€JØ×*Ñ*€LØ�?‰?Ò ˜b€DØ(¨DÐ0ÐØÐ4Ñ4ØÐ,Ò,á ØàÐ(Ò(ØÜ˜w u gÐ-EÀdÀVÈ2ÐNÓOÐOàÐ-Ò-ØÐ$Ò$ØÜ˜7 5 'Ð)AÀ$ÀÀrÐJÓKÐKàÐ+Ò+Ù Ð)9Ò!9ØÜÐWÓXÐXð 	Ð=Ñ=ØÐIÑIØ�D‰Lð 	ð �tÒÜØ�e�WÐ4°T°FÐ:OÐP\È~Ð]fÐgkÐflÐlmÐnó
ð 	
ð r$   c                   óD   ‡ — e Zd Zˆ fd„Zddeeef   dee   de	fd„Z
ˆ xZS )Ú HFInferenceFeatureExtractionTaskc                 ó$   •— t         ‰| �  d«       y )Nr;   rf   rg   s    €r#   r   z)HFInferenceFeatureExtractionTask.__init__·   s   ø€ Ü‰ÑÐ-Õ.r$   r|   Úrequest_paramsr&   c                 ó<   — t        |t        «      rt        |«      S |S r(   )rE   rF   r   )r!   r|   rŠ   s      r#   Úget_responsez-HFInferenceFeatureExtractionTask.get_responseº   s   € Ü�h¤Ô&Ü! (Ó+Ð+Øˆr$   r(   )rI   rJ   rK   r   r   rF   r   r   r   r   rŒ   rN   rO   s   @r#   rˆ   rˆ   ¶   s2   ø„ ô/ñ U¨5°$¨;Ñ%7ð ÈÐRcÑIdð Ðps÷ r$   rˆ   )#rY   Ú	functoolsr   Úpathlibr   Útypingr   r   r   r   Úhuggingface_hubr	   r‚   r
   Ú!huggingface_hub.inference._commonr   r   r   r   Ú,huggingface_hub.inference._providers._commonr   r   Úhuggingface_hub.utilsr   r   r   r   r   rQ   rc   rM   rn   r2   r5   rˆ   rS   r$   r#   ú<module>r”      sÒ   ðÛ Ý Ý ß -Ó -å %Ý ;ß mÓ mß Xß _Ó _ô-IÐ(ô -Iô`v ô vô>4 ô 4ð0¨#ð °#ó ñ �1Ôðj 4¨¨X°c©]Ð(:Ñ#;ò jó ðjñ �4Ôð( ð (¨Cð (°Dò (ó ð(ôV õ r$   