o
    g2                  
   @   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mZmZ eeZdZdddd	d
ddddd	ddiddidZdededefddZG dd de	ZG dd deZdS )    )AnyDictOptionalUnion)	constants)RequestParametersTaskProviderHelper_as_dict)build_hf_headersget_session	get_tokenloggingzhttps://api.replicate.comzblack-forest-labs/flux-devzblack-forest-labs/flux-schnellz\bytedance/hyper-flux-16step:382cf8959fb0f0d665b26e7e80b8d6dc3faaef1510f14ce017e8c732bb3d1eb7z_bytedance/sdxl-lightning-4step:5599ed30703defd1d160a25a63321b4dec97101d98b4674bcc56e41f62f35637znplaygroundai/playground-v2.5-1024px-aesthetic:a45f82a1382bed5c7aeb861dac7c7d191b0fdf74d8d57c4a0e6ed7d4d0bf7d24z-stability-ai/stable-diffusion-3.5-large-turboz'stability-ai/stable-diffusion-3.5-largez(stability-ai/stable-diffusion-3.5-mediumzRstability-ai/sdxl:7762fd07cf82c948538e41f63f77d685e02b063e37e496e96eefd46c929f9bdc)	zblack-forest-labs/FLUX.1-devz black-forest-labs/FLUX.1-schnellzByteDance/Hyper-SDzByteDance/SDXL-Lightningz-playgroundai/playground-v2.5-1024px-aestheticz,stabilityai/stable-diffusion-3.5-large-turboz&stabilityai/stable-diffusion-3.5-largez'stabilityai/stable-diffusion-3.5-mediumz(stabilityai/stable-diffusion-xl-base-1.0zOuteAI/OuteTTS-0.3-500MzQjbilcke/oute-tts:39a59319327b27327fa3095149c5a746e7f2aee18c75055c3368237a6503cd26zgenmo/mochi-1-previewzPgenmoai/mochi-1:1944af04d098ef69bed7f9d335d102e652203f268ec4aaa2d836f6217217e460)ztext-to-imagetext-to-speechztext-to-videobase_urlmodelreturnc                 C   s"   d|v r	|  dS |  d| dS )N:z/v1/predictionsz/v1/models/z/predictions )r   r   r   r   e/var/www/visachat/venv/lib/python3.10/site-packages/huggingface_hub/inference/_providers/replicate.py
_build_url"   s   
r   c                   @   s   e Zd ZdefddZdddedeeef ded	ee d
ee deeeef  defddZ	d	ee defddZ
dedeeef d	edeeef fddZdeeef defddZdS )ReplicateTasktaskc                 C   s
   || _ d S N)r   )selfr   r   r   r   __init__)   s   
zReplicateTask.__init__N)extra_payloadinputs
parametersheadersr   api_keyr   r   c                C   s   |d u rt  }|d u rtd|dr!tjjdd}td nt}td | 	|}t
||}	i t|d|dd	i}| j|||d
}
t|	| j||
d |dS )Nz^You must provide an api_key to work with Replicate API or log in with `huggingface-cli login`.hf_	replicate)providerz6Calling Replicate provider through Hugging Face proxy.z$Calling Replicate provider directly.)tokenPreferwait)r   r   )urlr   r   jsondatar   )r   
ValueError
startswithr   INFERENCE_PROXY_TEMPLATEformatloggerinfoBASE_URL
_map_modelr   r
   _prepare_payloadr   r   )r   r   r   r   r   r   r   r   mapped_modelr&   payloadr   r   r   prepare_request,   s:   




zReplicateTask.prepare_requestc                 C   s`   |d u rt d| jtvrt d| j dt| j |}|d u r.t d| d| j d|S )Nz.Please provide a model available on Replicate.zTask z not supported with Replicate.zModel z* is not supported with Replicate for task .)r)   r   SUPPORTED_MODELSget)r   r   r2   r   r   r   r0   X   s   
zReplicateTask._map_modelc                 C   B   dd|idd |  D i}d|v r|ddd }||d< |S )Ninputpromptc                 S      i | ]\}}|d ur||qS r   r   .0kvr   r   r   
<dictcomp>k       z2ReplicateTask._prepare_payload.<locals>.<dictcomp>r      versionitemssplitr   r   r   r   r3   rC   r   r   r   r1   b   s   zReplicateTask._prepare_payloadresponsec                 C   s\   t |}|dd u rtd|d dt|d tr!|d n|d d }t |jS )NoutputzLInference request timed out after 60 seconds. No output generated for model r   zHThe model might be in cold state or starting up. Please try again later.r   )r	   r7   TimeoutError
isinstancestrr   content)r   rH   response_dict
output_urlr   r   r   get_responses   s    zReplicateTask.get_response)__name__
__module____qualname__rL   r   r   r   r   r   r4   r0   r1   r   bytesrP   r   r   r   r   r   (   s:    
	
,



r   c                
       sF   e Zd Z fddZdedeeef dedeeef fddZ  ZS )	ReplicateTextToSpeechTaskc                    s   t  d d S )Nr   )superr   )r   	__class__r   r   r      s   z"ReplicateTextToSpeechTask.__init__r   r   r   r   c                 C   r8   )Nr9   r   c                 S   r;   r   r   r<   r   r   r   r@      rA   z>ReplicateTextToSpeechTask._prepare_payload.<locals>.<dictcomp>r   rB   rC   rD   rG   r   r   r   r1      s   z*ReplicateTextToSpeechTask._prepare_payload)	rQ   rR   rS   r   r   r   rL   r1   __classcell__r   r   rW   r   rU      s    

rU   N)typingr   r   r   r   huggingface_hubr   !huggingface_hub.inference._commonr   r   r	   huggingface_hub.utilsr
   r   r   r   
get_loggerrQ   r-   r/   r6   rL   r   r   rU   r   r   r   r   <module>   s0    
X