
    ^j/                        d dl Z d dlZd dlmZ 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mZmZ d dlmZmZmZ  ej*                  e      ZdZd	Zd
ZdZddhZ G d dee      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" G d de      Z#de$de$fdZ% G d d ee      Z& G d! d"e&      Z' G d# d$e&      Z(y)%    N)ABC)Any)InferenceProviderMapping)RequestParameters_as_dict_as_url)BaseConversationalTaskBaseTextGenerationTaskTaskProviderHelperfilter_none)get_sessionhf_raise_for_statusloggingtogetherzhttps://api.together.xyzg       @   queuedin_progressc                   <     e Zd ZdZdef fdZdededefdZ xZS )TogetherTaskz"Base class for Together API tasks.taskc                 :    t         |   t        t        |       y )N)providerbase_urlr   super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     x/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/together.pyr   zTogetherTask.__init__(   s    )idK    mapped_modelapi_keyreturnc                     | j                   xxdk(  r  yxdk(  r  y xdk(  r yxdk(  r yxdk(  r y
xd	k(  r y
 t        d| j                    d      )Ntext-to-imageimage-to-imagez/v1/images/generationstext-to-speechz/v1/audio/speechfeature-extractionz/v1/embeddingstext-to-videoimage-to-videoz
/v2/videoszUnsupported task 'z' for Together API.)r   
ValueError)r   r#   r$   s      r!   _prepare_routezTogetherTask._prepare_route+   se    ii33/ $43/ 4!)%' 3# $43# 4 -dii[8KLMMr"   )__name__
__module____qualname____doc__strr   r.   __classcell__r    s   @r!   r   r   %   s2    ,LS LN3 N N Nr"   r   c                   @     e Zd Z fdZddeez  dedz  defdZ xZ	S )TogetherTextGenerationTaskc                 8    t         |   t        t               y N)r   r   r   r   r    s    r!   r   z#TogetherTextGenerationTask.__init__:       )i@r"   Nresponserequest_paramsr%   c                 v    t        |      d   d   }|d   |j                  d      |j                  d      ddS )Nchoicesr   textfinish_reasonseed)rA   rB   )generated_textdetails)r   get)r   r<   r=   outputs       r!   get_responsez'TogetherTextGenerationTask.get_response=   sD    (#I.q1$Vn!'O!<

6*
 	
r"   N)
r/   r0   r1   r   bytesdictr   r   rG   r4   r5   s   @r!   r7   r7   9   s/    A
UT\ 
CTW[C[ 
gj 
r"   r7   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 )TogetherConversationalTaskc                 8    t         |   t        t               y r9   r   r:   s    r!   r   z#TogetherConversationalTask.__init__I   r;   r"   inputs
parametersprovider_mapping_infor%   Nc                    t         |   |||      }|y |j                  d      }t        |t              rH|j                  d      dk(  r4t        |j                  d      t              rd|d   v rd|d   d   d|d<   |S )Nresponse_formattypejson_schemaschema)rS   rU   )r   _prepare_payload_as_dictrE   
isinstancerJ   )r   rN   rO   rP   payloadrR   r    s         r!   rV   z3TogetherConversationalTask._prepare_payload_as_dictL   s     '26:G\]? "++&78-##F+}<?..}=tDOM:: &)-8B*G%& r"   	r/   r0   r1   r   r   rJ   r   rV   r4   r5   s   @r!   rL   rL   H   s7    A'+D\	 r"   rL   c            	       ^     e Zd Z 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 )TogetherTextToImageTaskc                 $    t         |   d       y )Nr'   r   r   r:   s    r!   r   z TogetherTextToImageTask.__init__c       )r"   rN   rO   rP   r%   Nc                 v    |j                   }t        |      }d|v r|j                  d      |d<   |dd|d|iS )Nnum_inference_stepsstepsbase64)promptrR   model)provider_idr   pop)r   rN   rO   rP   r#   s        r!   rV   z0TogetherTextToImageTask._prepare_payload_as_dictf   sM     -88 ,
 J.",..1F"GJw XccWVbccr"   r<   r=   c                 T    t        |      }t        j                  |d   d   d         S Ndatar   b64_jsonr   rb   	b64decoder   r<   r=   response_dicts       r!   rG   z$TogetherTextToImageTask.get_responsep   ,     *f 5a 8 DEEr"   rH   r/   r0   r1   r   r   rJ   r   rV   rI   r   rG   r4   r5   s   @r!   r[   r[   b   s`    *dd'+dD\d	dFUT\ FCTW[C[ Fgj Fr"   r[   c            	       ^     e Zd Z 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 )TogetherImageToImageTaskc                 $    t         |   d       y )Nr(   r]   r:   s    r!   r   z!TogetherImageToImageTask.__init__v       )*r"   rN   rO   rP   r%   Nc                    |j                   }t        |d      }t        |      }|j                  dd      }d|v r|j                  d      |d<   |j	                         }d|v xr d|v }|rd	|ind
|gi}	d|i|	ddi|d|iS )Nz
image/jpegdefault_mime_typerc    r`   ra   kontextzflux.1	image_urlreference_imagesrR   rb   rd   )re   r   r   rf   lower)
r   rN   rO   rP   r#   rz   rc   lowereduse_image_urlimage_fields
             r!   rV   z1TogetherImageToImageTask._prepare_payload_as_dicty   s     -88FlC	
 !,
"- J.",..1F"GJw $$&!W,DW1DBO{I&>VhktjuUvf

 x
 	

 \
 	
r"   r<   r=   c                 T    t        |      }t        j                  |d   d   d         S rh   rk   rm   s       r!   rG   z%TogetherImageToImageTask.get_response   ro   r"   rH   rp   r5   s   @r!   rr   rr   u   s[    +

'+
D\
	
>FUT\ FCTW[C[ Fgj Fr"   rr   c            	       ^     e Zd Z 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 )TogetherFeatureExtractionTaskc                 $    t         |   d       y )Nr*   r]   r:   s    r!   r   z&TogetherFeatureExtractionTask.__init__   s    -.r"   rN   rO   rP   r%   Nc                 6    ||j                   dt        |      S N)inputrd   re   r   r   rN   rO   rP   s       r!   rV   z6TogetherFeatureExtractionTask._prepare_payload_as_dict   s)     *66
 *%
 	
r"   r<   r=   c                 J    t        |      d   D cg c]  }|d   	 c}S c c}w )Nri   	embedding)r   )r   r<   r=   items       r!   rG   z*TogetherFeatureExtractionTask.get_response   s%    .6x.@.HId[!IIIs    rH   rp   r5   s   @r!   r   r      s[    /

'+
D\
	
JUT\ JCTW[C[ Jgj Jr"   r   c            	       ^     e Zd Z 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 )TogetherTextToSpeechTaskc                 $    t         |   d       y )Nr)   r]   r:   s    r!   r   z!TogetherTextToSpeechTask.__init__   rt   r"   rN   rO   rP   r%   Nc                 6    ||j                   dt        |      S r   r   r   s       r!   rV   z1TogetherTextToSpeechTask._prepare_payload_as_dict   s)     *66
 *%
 	
r"   r<   r=   c                 j    t        |t              r|S t        dt        |      j                   d      )Nz1Expected raw audio bytes for text-to-speech, got .)rW   rI   r-   rS   r/   )r   r<   r=   s      r!   rG   z%TogetherTextToSpeechTask.get_response   s3    h&OLTRZ^MdMdLeefghhr"   rH   rp   r5   s   @r!   r   r      s[    +



'+

D\

	

iUT\ iCTW[C[ igj ir"   r   rO   r%   c                     t        |       } d| v r| j                  d      | d<   d| v r)| j                  d      }d|v r|d   | d<   d|v r|d   | d<   | S )zNMap HF inference-client conventions onto Together's video API parameter names.r`   ra   target_sizewidthheight)r   rf   )rO   r   s     r!   _normalize_video_parametersr      sr    Z(J
*(nn-BC
7
" nn]3k!"-g"6Jw{"#.x#8Jx r"   c                   2    e Zd ZdZddeez  dedz  defdZy)TogetherVideoTaskz>Base class for Together's asynchronous video generation tasks.Nr<   r=   r%   c                    |t        d      t        |      }|j                  d      }|st        d      |j                   d| }t        j                  d       |j                  d      }t        t              D ]  }|
|t        vr nt        j                  t               t               j                  ||j                        }t        |       |j                         }|j                  d      }|||t        vs n t        dt         d	      |d
k(  r6|j                  d      xs i }	t!        d|	j                  d      xs d       |dk7  rt!        d|      |j                  d      xs i j                  d      }
|
st        d      t               j                  |
      }t        |       |j"                  S )NzEA `RequestParameters` object is required to poll Together video jobs.idz6No job ID found in Together video generation response./z+Generating video, polling for completion...status)headersuI   Timed out while waiting for Together video generation — aborting after z status pollsfailederrorz"Together video generation failed: messagezUnknown error	completedz&Unexpected Together video job status: outputs	video_urlz3No video URL found in completed Together video job.)r-   r   rE   urlloggerinforange_VIDEO_MAX_POLL_ATTEMPTS_VIDEO_PENDING_STATUSEStimesleep_VIDEO_POLLING_INTERVALr   r   r   jsonRuntimeErrorcontent)r   r<   r=   jobjob_id
status_urlr   _status_responser   r   video_responses               r!   rG   zTogetherVideoTask.get_response   s   !deex UVV '**+1VH5
AB "/0 	A!f4K&KJJ./)m//
NDZDZ/[O0!&&(CWWX&F!f4K&K	 &&>%?}N 
 XGGG$*E!CEIIiDXDk\kClmnn[ !GzRSSWWY'-222;?	RSS$**95N+%%%r"   rH   )	r/   r0   r1   r2   rI   rJ   r   r   rG    r"   r!   r   r      s+    H-&UT\ -&CTW[C[ -&gj -&r"   r   c            	       <     e Zd Z fdZdededededz  fdZ xZS )TogetherTextToVideoTaskc                 $    t         |   d       y )Nr+   r]   r:   s    r!   r   z TogetherTextToVideoTask.__init__  r^   r"   rN   rO   rP   r%   Nc                 6    ||j                   dt        |      S )N)rc   rd   )re   r   r   s       r!   rV   z0TogetherTextToVideoTask._prepare_payload_as_dict	  s)     *66
 **5
 	
r"   rY   r5   s   @r!   r   r     s1    *

'+
D\
	
r"   r   c            	       <     e Zd Z fdZdededededz  fdZ xZS )TogetherImageToVideoTaskc                 $    t         |   d       y )Nr,   r]   r:   s    r!   r   z!TogetherImageToVideoTask.__init__  rt   r"   rN   rO   rP   r%   Nc                 T    |j                   t        |d      ddgdt        |      S )Nz	image/pngrv   first)input_imageframe)rd   frame_images)re   r   r   r   s       r!   rV   z1TogetherImageToVideoTask._prepare_payload_as_dict  s9     +66-4V{-[fmno
 **5
 	
r"   rY   r5   s   @r!   r   r     s1    +

'+
D\
	
r"   r   ))rb   r   abcr   typingr   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr   r   r   ,huggingface_hub.inference._providers._commonr	   r
   r   r   huggingface_hub.utilsr   r   r   
get_loggerr/   r   r   r   r   r   r   r   r7   rL   r[   rr   r   r   rJ   r   r   r   r   r   r"   r!   <module>r      s       ; 
  L K 
		H	%	&	     $]3 N%s N(
!7 
!7 4Fl F&%F| %FPJL J"i| i,D T 0&c 0&f
/ 

0 
r"   