
    \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    a/root/.hermes/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/deepinfra.py_form_field_valuer      sO    %%v+G+%#u&5z::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   zz|H)33EOO4IrJTfUH
XJ 
A(1MTTV
F,FGHOOQeE lln 

U
O""$4SE;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__./%zz*:DA|&WFWG5J5V5V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$Vn!'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
UT\ 
CTW[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    )iFd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"

 /uf=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~$$abfgkblammnopp"($::j)h%  ( gt, !V,GKK<PRYR]R]^cRd;ef F8
  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13 1 1 177 7  8	7
 d{7 
T	7$UT\ CTW[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   