a
    h                     @   s   d dl mZmZmZ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	 d	eZG d
d deZG dd deZG dd deZdS )    )AnyDictOptionalUnion)InferenceProviderMapping)RequestParameters_as_dict_as_url)TaskProviderHelperfilter_none)get_sessionZ	replicatezhttps://api.replicate.comc                       s   e Zd Zed fddZeeed fddZeeeddd	Zeee	e
e d
ddZdeeef e
e edddZ  ZS )ReplicateTask)taskc                    s   t  jtt|d d S )N)providerbase_urlr   )super__init__	_PROVIDER	_BASE_URL)selfr   	__class__ j/var/www/html/assistant/venv/lib/python3.9/site-packages/huggingface_hub/inference/_providers/replicate.pyr      s    zReplicateTask.__init__)headersapi_keyreturnc                    s   t  ||}d|d< |S )NwaitZPrefer)r   _prepare_headers)r   r   r   r   r   r   r      s    zReplicateTask._prepare_headers)mapped_modelr   r   c                 C   s   d|v rdS d| dS )N:z/v1/predictionsz/v1/models/z/predictionsr   )r   r   r   r   r   r   _prepare_route   s    zReplicateTask._prepare_routeinputs
parametersprovider_mapping_infor   c                 C   s>   |j }dd|it|i}d|v r:|ddd }||d< |S )Ninputpromptr       version)provider_idr   split)r   r#   r$   r%   r   payloadr)   r   r   r   _prepare_payload_as_dict   s    z&ReplicateTask._prepare_payload_as_dictN)responserequest_paramsr   c                 C   s\   t |}|dd u r,td|d dt|d trB|d n
|d d }t |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   r.   r/   Zresponse_dictZ
output_urlr   r   r   get_response%   s     zReplicateTask.get_response)N)__name__
__module____qualname__r5   r   r   r   r!   r   r   r   r-   r   bytesr   r7   __classcell__r   r   r   r   r      s   
r   c                       s8   e Zd Z fddZeeeee d fddZ  Z	S )ReplicateTextToImageTaskc                    s   t  d d S )Nztext-to-imager   r   r   r   r   r   r   3   s    z!ReplicateTextToImageTask.__init__r"   c                    s2   t  |||}|jd ur.d|j |d d< |S )Nzhttps://huggingface.co/r&   Zlora_weights)r   r-   Zadapter_weights_pathZhf_model_idr   r#   r$   r%   r,   r   r   r   r-   6   s    
z1ReplicateTextToImageTask._prepare_payload_as_dict
r8   r9   r:   r   r   r   r   r   r-   r<   r   r   r   r   r=   2   s   r=   c                       s8   e Zd Z fddZeeeee d fddZ  Z	S )ReplicateTextToSpeechTaskc                    s   t  d d S )Nztext-to-speechr>   r?   r   r   r   r   @   s    z"ReplicateTextToSpeechTask.__init__r"   c                    s*   t  |||}|d d|d d< |S )Nr&   r'   text)r   r-   popr@   r   r   r   r-   C   s    z2ReplicateTextToSpeechTask._prepare_payload_as_dictrA   r   r   r   r   rB   ?   s   rB   c                       s4   e Zd Z fddZeeeee dddZ  Z	S )ReplicateImageToImageTaskc                    s   t  d d S )Nzimage-to-imager>   r?   r   r   r   r   L   s    z"ReplicateImageToImageTask.__init__r"   c                 C   sJ   t |dd}dd|it|i}|j}d|v rF|ddd }||d< |S )Nz
image/jpeg)Zdefault_mime_typer&   Zinput_imager    r(   r)   )r	   r   r*   r+   )r   r#   r$   r%   Z	image_urlr,   r   r)   r   r   r   r-   O   s    z2ReplicateImageToImageTask._prepare_payload_as_dictrA   r   r   r   r   rE   K   s   rE   N)typingr   r   r   r   Zhuggingface_hub.hf_apir   Z!huggingface_hub.inference._commonr   r   r	   Z,huggingface_hub.inference._providers._commonr
   r   Zhuggingface_hub.utilsr   r   r   r   r=   rB   rE   r   r   r   r   <module>   s   %