Ë
    ÂÓ^j_  ã                   óæ   — d dl Z d dlZ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mZmZmZ dZdZd	ed
efd„Zdedeeef   d
eeef   fd„Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    N)ÚAny)ÚInferenceProviderMapping)Ú	MimeBytesÚRequestParametersÚ_as_dictÚ_open_as_mime_bytesé   )ÚBaseConversationalTaskÚBaseTextGenerationTaskÚTaskProviderHelperÚfilter_noneÚ	deepinfrazhttps://api.deepinfra.comÚvalueÚreturnc                 ó¾   — t        | t        «      r| S t        | t        «      r| rdS dS t        | t        t        f«      rt        | «      S t        j                  | «      S )NÚtrueÚfalse)Ú
isinstanceÚstrÚboolÚintÚfloatÚjsonÚdumps)r   s    úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/deepinfra.pyÚ_form_field_valuer      sO   € Ü�%œÔØˆÜ�%œÔÙˆvÐ+ GÐ+Ü�%œ#œu˜Ô&Ü�5‹zÐÜ�:‰:�eÓÐó    ÚaudioÚfieldsc                 óJ  — t        j                  «       j                  }dt        j                  | j
                  xs d«      xs dz   }d|› �j                  «       d|› d�j                  «       d| j
                  xs d› �j                  «       d	t        | «      g}|j                  «       D ]H  \  }}|d|› �j                  «       d
|› d�j                  «       d	t        |«      j                  «       gz  }ŒJ |d|› d�j                  «       d	gz  }dj                  |«      d|› �fS )Nr   Ú z.wavz--z7Content-Disposition: form-data; name="file"; filename="ú"zContent-Type: zapplication/octet-streamr   z&Content-Disposition: form-data; name="s   
zmultipart/form-data; boundary=)ÚuuidÚuuid4ÚhexÚ	mimetypesÚguess_extensionÚ	mime_typeÚencodeÚbytesÚitemsr   Újoin)r   r   ÚboundaryÚfilenameÚlinesÚkeyr   s          r   Ú_encode_multipartr1      s0  € Ü�z‰z‹|×Ñ€Hàœ)×3Ñ3°E·O±OÒ4IÀrÓJÒTÈfÑU€Hà
ˆXˆJˆ×ÑÓ Ø
AÀ(ÀÈ1ÐM×TÑTÓVØ
˜Ÿ™ÒFÐ,FÐGÐH×OÑOÓQØÜˆe‹ð€Eð —l‘l“nò 
‰
ˆˆUØØ��
ˆO×"Ñ"Ó$Ø4°S°E¸Ð;×BÑBÓDØÜ˜eÓ$×+Ñ+Ó-ð	
ñ 	
‰ð
ð 
��8�*˜BÐ×&Ñ&Ó(¨#Ð.Ñ.€EØ�<‰<˜ÓÐ"@ÀÀ
Ð KÐKÐKr   c            	       ór   ‡ — e Zd Zˆ 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	dde
ez  ded	z  defd„Zˆ xZS )ÚDeepInfraTextGenerationTaskc                 ó8   •— t         ‰| �  t        t        ¬«       y ©N)ÚproviderÚbase_url©ÚsuperÚ__init__Ú	_PROVIDERÚ	_BASE_URL©ÚselfÚ	__class__s    €r   r:   z$DeepInfraTextGenerationTask.__init__1   ó   ø€ Ü‰Ñ¤)´iÐÕ@r   Úmapped_modelÚapi_keyr   c                  ó   — y)Nz/v1/openai/completions© ©r>   rA   rB   s      r   Ú_prepare_routez*DeepInfraTextGenerationTask._prepare_route4   s   € Ø'r   ÚinputsÚ
parametersÚprovider_mapping_infoNc                 ó†   — t        |j                  «       «      }|j                  dd «      |d<   d|i|¥d|j                  i¥S )NÚmax_new_tokensÚ
max_tokensÚpromptÚmodel)r   ÚcopyÚpopÚprovider_id)r>   rG   rH   rI   Úparamss        r   Ú_prepare_payload_as_dictz4DeepInfraTextGenerationTask._prepare_payload_as_dict7   sI   € ô ˜ZŸ_™_Ó.Ó/ˆØ%Ÿz™zÐ*:¸DÓAˆˆ|Ñà˜&ÐW FÐW¨GÐ5J×5VÑ5VÑWÐWr   ÚresponseÚrequest_paramsc                 óv   — t        |«      d   d   }|d   |j                  d«      |j                  d«      dœdœS )NÚchoicesr   ÚtextÚfinish_reasonÚseed)rY   rZ   )Úgenerated_textÚdetails)r   Úget)r>   rT   rU   Úoutputs       r   Úget_responsez(DeepInfraTextGenerationTask.get_response?   sD   € Ü˜(Ó# IÑ.¨qÑ1ˆà$ V™nà!'§¡¨OÓ!<ØŸ
™
 6Ó*ññ
ð 	
r   ©N)Ú__name__Ú
__module__Ú__qualname__r:   r   rF   r   Údictr   rS   r*   r   r_   Ú__classcell__©r?   s   @r   r3   r3   0   sw   ø„ ôAð(¨3ð (¸ð (Àó (ðXØðXØ'+ðXØD\ðXà	�‰óXñ
 U¨T¡\ð 
ÐCTÐW[ÑC[ð 
Ðgj÷ 
r   r3   c                   ó2   ‡ — e Zd Zˆ fd„Zdededefd„Zˆ xZS )ÚDeepInfraConversationalTaskc                 ó8   •— t         ‰| �  t        t        ¬«       y r5   r8   r=   s    €r   r:   z$DeepInfraConversationalTask.__init__K   r@   r   rA   rB   r   c                  ó   — y)Nz/v1/openai/chat/completionsrD   rE   s      r   rF   z*DeepInfraConversationalTask._prepare_routeN   s   € Ø,r   )ra   rb   rc   r:   r   rF   re   rf   s   @r   rh   rh   J   s#   ø„ ôAð-¨3ð -¸ð -À÷ -r   rh   c                   ó|   ‡ — e Zd Zˆ fd„Zdededefd„Zdededed	ed
z  de	d
z  f
d„Z
ddeez  ded
z  defd„Zˆ xZS )Ú'DeepInfraAutomaticSpeechRecognitionTaskc                 ó:   •— t         ‰| �  t        t        d¬«       y )Nzautomatic-speech-recognition)r6   r7   Útaskr8   r=   s    €r   r:   z0DeepInfraAutomaticSpeechRecognitionTask.__init__S   s   ø€ Ü‰Ñ¤)´iÐFdÐÕer   rA   rB   r   c                  ó   — y)Nz/v1/openai/audio/transcriptionsrD   rE   s      r   rF   z6DeepInfraAutomaticSpeechRecognitionTask._prepare_routeV   s   € Ø0r   rG   rH   rI   Úextra_payloadNc                 ó¤   — t        |«      }i t        |«      ¥t        |xs i «      ¥d|j                  i¥}t        ||«      \  }}t	        ||¬«      S )NrN   )r(   )r   r   rQ   r1   r   )	r>   rG   rH   rI   rp   r   r   ÚbodyÚcontent_types	            r   Ú_prepare_payload_as_byteszADeepInfraAutomaticSpeechRecognitionTask._prepare_payload_as_bytesY   sg   € ô $ FÓ+ˆð"
Ü˜*Ó%ð"
ä˜-Ò-¨2Ó.ð"
ð Ð*×6Ñ6ñ"
ˆô
 /¨u°fÓ=ÑˆˆlÜ˜¨Ô6Ð6r   rT   rU   c                 ót  — t        |«      }|d   }t        |t        «      st        dt	        |«      › d�«      ‚d|i}|j                  d«      }t        |t        «      rU|D �cg c]F  }t        |t        «      r4|j                  d«      |j                  d«      |j                  d«      gdœ‘ŒH c}|d<   |S c c}w )	NrX   zBUnexpected output format from DeepInfra API. Expected string, got ú.ÚsegmentsÚstartÚend)rX   Ú	timestampÚchunks)r   r   r   Ú
ValueErrorÚtyper]   Úlistrd   )r>   rT   rU   r^   rX   Úresultrw   Úsegments           r   r_   z4DeepInfraAutomaticSpeechRecognitionTask.get_responsek   s¼   € Ü˜(Ó#ˆØ�f‰~ˆÜ˜$¤Ô$ÜÐaÔbfÐgkÓblÐamÐmnÐoÓpÐpØ"(¨$ ˆØ—:‘:˜jÓ)ˆÜ�h¤Ô%ð  (ö àÜ˜g¤tÔ,ð !Ÿ™ VÓ,¸G¿K¹KÈÓ<PÐRY×R]ÑR]Ð^cÓRdÐ;eÓfò ˆF�8Ñð
 ˆùò s   Á"AB5r`   )ra   rb   rc   r:   r   rF   r   rd   r   r   rt   r*   r   r_   re   rf   s   @r   rl   rl   R   s‡   ø„ ôfð1¨3ð 1¸ð 1Àó 1ð7àð7ð ð7ð  8ð	7ð
 ˜d‘{ð7ð 
�TÑ	ó7ñ$ U¨T¡\ð ÐCTÐW[ÑC[ð Ðgj÷ r   rl   )r   r&   r#   Útypingr   Úhuggingface_hub.hf_apir   Ú!huggingface_hub.inference._commonr   r   r   r   Ú_commonr
   r   r   r   r;   r<   r   r   rd   Útupler*   r1   r3   rh   rl   rD   r   r   ú<module>r†      s–   ðÛ Û Û Ý å ;ß iÓ iç dÓ dð €	Ø'€	ð˜Sð  Só ðL˜Yð L°°S¸#°X±ð LÀ5ÈÐPSÈÑCTó Lô,
Ð"8ô 
ô4-Ð"8ô -ô&Ð.@õ &r   