
    i                         d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZ dZdZ G d d	e	      Z G d
 de      Z G d de      Z G d de      Z G d de      Zy)    )Any)InferenceProviderMapping)RequestParameters_as_dict_as_url)TaskProviderHelperfilter_none)get_session	replicatezhttps://api.replicate.comc            	            e Zd Zdef fdZdededeeef   f 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 )ReplicateTasktaskc                 :    t         |   t        t        |       y )N)providerbase_urlr   )super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     /var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/replicate.pyr   zReplicateTask.__init__   s    )idK    headersapi_keyreturnc                 2    t         |   ||      }d|d<   |S )NwaitPrefer)r   _prepare_headers)r   r   r   r   s      r   r    zReplicateTask._prepare_headers   s#    '*7G<"r   mapped_modelc                     d|v ryd| dS )N:z/v1/predictionsz/v1/models/z/predictions )r   r!   r   s      r   _prepare_routezReplicateTask._prepare_route   s    ,$\N,77r   inputs
parametersprovider_mapping_infoNc                 |    |j                   }dd|it        |      i}d|v r|j                  dd      d   }||d<   |S )Ninputpromptr#      version)provider_idr	   split)r   r&   r'   r(   r!   payloadr-   s          r   _prepare_payload_as_dictz&ReplicateTask._prepare_payload_as_dict   sV     -88#*Xv,YZAX,Y"Z,"((a03G!(GIr   responserequest_paramsc                     t        |      }|j                  d      t        d|j                  d       d      t        |d   t              r|d   n|d   d   }t               j                  |      j                  S )NoutputzLInference request timed out after 60 seconds. No output generated for model modelzHThe model might be in cold state or starting up. Please try again later.r   )r   getTimeoutError
isinstancestrr
   content)r   r2   r3   response_dict
output_urls        r   get_responsezReplicateTask.get_response%   s     *X&.^_l_p_pqx_y^zZ[ 
 (2-2I3'OM(#UbckUlmnUo 	 }  ,444r   N)__name__
__module____qualname__r:   r   dictr   r    r%   r   r1   bytesr   r>   __classcell__r   s   @r   r   r      s    LS L s tCH~ 
83 8 8 8
'+D\	
5UT\ 
5CTW[C[ 
5gj 
5r   r   c            	       @     e Zd Z fdZdededededz  f fdZ xZS )ReplicateTextToImageTaskc                 $    t         |   d       y )Nztext-to-imager   r   r   r   s    r   r   z!ReplicateTextToImageTask.__init__3   s    )r   r&   r'   r(   r   Nc                 l    t         |   |||      }|j                  d|j                   |d   d<   |S )Nzhttps://huggingface.co/r*   lora_weights)r   r1   adapter_weights_pathhf_model_idr   r&   r'   r(   r0   r   s        r   r1   z1ReplicateTextToImageTask._prepare_payload_as_dict6   sH     8Mbc 55A1HI^IjIjHk/lGG^,r   	r@   rA   rB   r   r   rC   r   r1   rE   rF   s   @r   rH   rH   2   s6    *'+D\	 r   rH   c            	       @     e Zd Z fdZdededededz  f fdZ xZS )ReplicateTextToSpeechTaskc                 $    t         |   d       y )Nztext-to-speechrJ   rK   s    r   r   z"ReplicateTextToSpeechTask.__init__@       )*r   r&   r'   r(   r   Nc                 ^    t         |   |||      }|d   j                  d      |d   d<   |S )Nr*   r+   text)r   r1   poprP   s        r   r1   z2ReplicateTextToSpeechTask._prepare_payload_as_dictC   s=     8Mbc#*7#3#7#7#A r   rQ   rF   s   @r   rS   rS   ?   s6    +'+D\	 r   rS   c            	       `     e Zd Zd 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 )'ReplicateAutomaticSpeechRecognitionTaskr   Nc                 $    t         |   d       y )Nzautomatic-speech-recognitionrJ   rK   s    r   r   z0ReplicateAutomaticSpeechRecognitionTask.__init__L   s    78r   r&   r'   r(   c                     |j                   }t        |d      }di d|it        |      i}d|v r|j                  dd      d   |d<   |S )Nz	audio/wavdefault_mime_typer*   audior#   r,   r-   )r.   r   r	   r/   )r   r&   r'   r(   r!   	audio_urlr0   s          r   r1   z@ReplicateAutomaticSpeechRecognitionTask._prepare_payload_as_dictO   sq     -88FkB	  I&j)#
 ,!-!3!3C!;A!>GIr   r2   r3   c                 Z   t        |      }|j                  d      }t        |t              rd|iS t        |t              r-|r+|d   }t        |t              rd|iS t        |t
              r|}d }t        |t
              r|j                  d      }t        |t              r|}|j                  d      }t        |t              r|}|j                  d      }	t        |	t              r5t               j                  |	      }
|
j                          |
j                  }|d|iS t        d      )Nr5   rW   r   transcriptiontranslationtxt_filezKReceived malformed response from Replicate automatic-speech-recognition API)
r   r7   r9   r:   listrC   r
   raise_for_statusrW   
ValueError)r   r2   r3   r<   r5   
first_itemrW   rb   rc   rd   text_responses              r   r>   z4ReplicateAutomaticSpeechRecognitionTask.get_responsed   s    *""8,fc"F##fd#J*c*
++*d+#fd#"JJ7M--$ **]3K+s+"zz*-H(C( + 1 1( ;..0$))D>!fggr   )r   Nr?   )r@   rA   rB   r   r   rC   r   r1   rD   r   r>   rE   rF   s   @r   rZ   rZ   K   sa    9   8	
 
*!hUT\ !hCTW[C[ !hgj !hr   rZ   c            	       <     e Zd Z fdZdededededz  fdZ xZS )ReplicateImageToImageTaskc                 $    t         |   d       y )Nzimage-to-imagerJ   rK   s    r   r   z"ReplicateImageToImageTask.__init__   rU   r   r&   r'   r(   r   Nc                     t        |d      }d||g||gdt        |      i}|j                  }d|v r|j                  dd      d   }||d<   |S )Nz
image/jpegr]   r*   )imageimagesinput_imageinput_imagesr#   r,   r-   )r   r	   r.   r/   )r   r&   r'   r(   	image_urlr0   r!   r-   s           r   r1   z2ReplicateImageToImageTask._prepare_payload_as_dict   s{     FlC	 "$+(!*	
 j)#
 -88,"((a03G!(GIr   rQ   rF   s   @r   rk   rk      s1    +'+D\	r   rk   N)typingr   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr   r   r   ,huggingface_hub.inference._providers._commonr   r	   huggingface_hub.utilsr
   r   r   r   rH   rS   rZ   rk   r$   r   r   <module>rx      sd     ; R R X - 	'	"5& "5J
} 
	 	:hm :hz r   