Ë
    ÂÓ^jû$  ã                   ód  — 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	 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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dz  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)ÚurlparseÚ
urlunparse)Ú	constants)ÚInferenceProviderMapping)Ú	MimeBytesÚRequestParametersÚ_b64_encodeÚ_bytes_to_dictÚ_open_as_mime_bytes)Ú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dz  defd„Zdedz  defd	„Zded
edefd„Z	de
dedededz  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     €ú|/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/hf_inference.pyr   zHFInferenceTask.__init__   s2   ø€ Ü‰ÑØ#Ü×7Ñ7×>Ñ>ÈÐ>ÓWØð 	õ 	
ó    Úapi_keyNÚ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        d||| j                  d¬«      S |�|n"t        «       j	                  | j                  «      }|€t        d| j                  › d�«      ‚t        || j                  «       t        d||| j                  d¬«      S )N©zhttp://zhttps://r   Úlive)r   Ú
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Ü+Ø'°EÀuÐSW×S\ÑS\Ðekôð ð "Ð-‘5Ô3LÓ3N×3RÑ3RÐSW×S\ÑS\Ó3]ˆØÐÜØ˜Ÿ	™	�{ð #Qð Qóð ô 	˜h¨¯	©	Ô2Ü'Ø#°ÀhÐUY×U^ÑU^Ðgmô
ð 	
r$   Ú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_url2   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 )Nú!Unexpected binary input for task ú.úUnexpected path input for task ú (got ú)©r>   r?   ©Ú
isinstanceÚbytesr4   r   r   r   ©r!   r>   r?   r@   s       r#   Ú_prepare_payload_as_dictz(HFInferenceTask._prepare_payload_as_dict>   sb   € ô �fœeÔ$ÜÐ@ÀÇÁÀÈ1ÐMÓNÐNÜ�fœdÔ#ÜÐ>¸t¿y¹y¸kÈÐPVÈxÐWXÐYÓZÐZÜ f¸JÑGÓHÐHr$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r)   r	   r7   r=   r   ÚdictrL   Ú__classcell__©r"   s   @r#   r   r      s‰   ø„ Ù0ð
˜Sõ 
ð&¨¨d©
ð &°só &ð
¨3°©:ð 
Ð: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dz  fd„Zdededededz  dedz  f
d„Zy)	ÚHFInferenceBinaryInputTaskr>   r?   r@   r&   Nc                  ó   — y r(   © rK   s       r#   rL   z3HFInferenceBinaryInputTask._prepare_payload_as_dictI   s   € ð r$   Úextra_payloadc                 ó\  — t        |«      }|xs i }t        |«      dkD  xs t        |«      dkD  }t        |t        t        f«      st        |t
        «      st        d|› �«      ‚|st        |«      S t        t        j                  t        |«      |dœ|¥«      j                  d«      d¬«      S )Nr   z5Expected binary inputs or a local path or a URL. Got rG   zutf-8zapplication/json)Ú	mime_type)r   ÚlenrI   rJ   r   rQ   r4   r   r
   ÚjsonÚdumpsr   Úencode)r!   r>   r?   r@   rY   Úhas_parameterss         r#   Ú_prepare_payload_as_bytesz4HFInferenceBinaryInputTask._prepare_payload_as_bytesN   s­   € ô ! Ó,ˆ
Ø%Ò+¨ˆÜ˜Z›¨1Ñ,ÒF´°MÓ0BÀQÑ0Fˆô ˜&¤5¬$ -Ô0¼ÀFÌCÔ9PÜÐTÐU[ÐT\Ð]Ó^Ð^ñ Ü& vÓ.Ð.ô Ü�J‰J¤+¨fÓ"5ÀZÑaÐS`ÐaÓb×iÑiÐjqÓrØ(ô
ð 	
r$   )	rM   rN   rO   r   rR   r	   rL   r
   ra   rX   r$   r#   rV   rV   H   si   „ ðØðØ'+ðØD\ðà	�‰óð

àð
ð ð
ð  8ð	
ð
 ˜d‘{ð
ð 
�TÑ	ô
r$   rV   c            	       óP   ‡ — e Zd Zˆ fd„Zdededededz  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__i   s   ø€ Ü‰ÑÐ)Õ*r$   r>   r?   r@   r&   Nc                 ó  — t        |«      }|j                  }|j                  d«      xs |}|�|j                  d«      rd}|j                  d«      }t	        |t
        «      r"|j                  d«      dk(  rd|d   d   d	œ|d<   i |¥||d
œ¥S )Nr*   r,   ÚdummyÚresponse_formatÚtypeÚjson_schemaÚjson_objectÚschema)rk   Úvalue)r*   Úmessages)r   Úprovider_idr3   r1   rI   rR   )r!   r>   r?   r@   Úpayloadr8   Úpayload_modelrj   s           r#   rL   z2HFInferenceConversational._prepare_payload_as_dictl   s£   € ô ˜jÓ)ˆØ,×8Ñ8ˆØ"Ÿ™ wÓ/Ò?°<ˆàÐ  M×$<Ñ$<Ð=TÔ$UØ#ˆMà$Ÿ.™.Ð):Ó;ˆÜ�o¤tÔ,°×1DÑ1DÀVÓ1LÐP]Ò1]à%Ø(¨Ñ7¸ÑAñ*ˆGÐ%Ñ&ð G�'ÐF M¸vÒFÐFr$   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_url~   sP   € ð ×&Ñ&Ð'>Ô?ñ ä×6Ñ6×=Ñ=À~Ð=ÓVÐWÐW_Ð`lÐ_mÐnð 	ô
 *¨(Ó3Ð3r$   )rM   rN   rO   r   r   rR   r	   rL   rQ   r=   rS   rT   s   @r#   rc   rc   h   sP   ø„ ô+ðGØðGØ'+ðGØD\ðGà	�‰óGð$4 Cð 4°sð 4¸s÷ 4r$   rc   Ú	model_urlr&   c                 ó  — t        | «      }|j                  j                  d«      }|j                  d«      r| S |j                  d«      r|dz   }n
|sd}n|dz   }|j	                  |¬«      }t        t        |«      «      S )Nú/z/chat/completionsz/v1z/v1/chat/completions)Úpath)r   ry   ÚrstripÚendswithÚ_replacerQ   r   )rv   Úparsedry   Únew_pathÚ
new_parseds        r#   ru   ru   ‡   s…   € Ü�iÓ €FØ�;‰;×Ñ˜cÓ"€Dð ‡}�}Ð(Ô)ØÐð ‡}�}�UÔØÐ-Ñ-‰áØ)‰ð Ð0Ñ0ˆð —‘ h�Ó/€JÜŒz˜*Ó%Ó&Ð&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   r]   ÚitemsÚ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            	       ó^   ‡ — e Zd Zˆ fd„Zdededededz  fd„Zddeez  d	e	dz  defd
„Z
ˆ xZS )Ú HFInferenceFeatureExtractionTaskc                 ó$   •— t         ‰| �  d«       y )Nr;   rf   rg   s    €r#   r   z)HFInferenceFeatureExtractionTask.__init__Ò   s   ø€ Ü‰ÑÐ-Õ.r$   r>   r?   r@   r&   Nc                 óÊ   — t        |t        «      rt        d| j                  › d�«      ‚t        |t        «      rt        d| j                  › d|› d�«      ‚d|it        |«      ¥S )NrB   rC   rD   rE   rF   r>   rH   rK   s       r#   rL   z9HFInferenceFeatureExtractionTask._prepare_payload_as_dictÕ   si   € ô �fœeÔ$ÜÐ@ÀÇÁÀÈ1ÐMÓNÐNÜ�fœdÔ#ÜÐ>¸t¿y¹y¸kÈÐPVÈxÐWXÐYÓZÐZð ˜&Ð<¤K°
Ó$;Ð<Ð<r$   r‰   Úrequest_paramsc                 ó<   — t        |t        «      rt        |«      S |S r(   )rI   rJ   r   )r!   r‰   r˜   s      r#   Úget_responsez-HFInferenceFeatureExtractionTask.get_responseá   s   € Ü�h¤Ô&Ü! (Ó+Ð+Øˆr$   r(   )rM   rN   rO   r   r   rR   r	   rL   rJ   r   rš   rS   rT   s   @r#   r•   r•   Ñ   sW   ø„ ô/ð
=Øð
=Ø'+ð
=ØD\ð
=à	�‰ó
=ñ U¨T¡\ð ÐCTÐW[ÑC[ð Ðgj÷ r$   r•   )%r]   Ú	functoolsr   Úpathlibr   Útypingr   Úurllib.parser   r   Úhuggingface_hubr   r�   r	   Ú!huggingface_hub.inference._commonr
   r   r   r   r   Ú,huggingface_hub.inference._providers._commonr   r   Úhuggingface_hub.utilsr   r   r   r   r   rV   rc   rQ   ru   rR   r2   r5   r•   rX   r$   r#   ú<module>r£      s×   ðÛ Ý Ý Ý ß -å %Ý ;÷õ ÷ Yß _Ó _ô1IÐ(ô 1Iôh
 ô 
ô@4 ô 4ð>'¨#ð '°#ó 'ñ. �1Ôðj 4¨¨S°4©Z¨Ñ#8ò jó ðjñ �4Ôð( ð (¨Cð (°Dò (ó ð(ôV õ r$   