Ë
    Z²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     €úl/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/together.pyr   zTogetherTask.__init__(   s   ø€ Ü‰Ñ¤)´iÀdÐÕ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   € Ø�i‰iØ3”Ñ3Ø/ô $4Ñ3Ø/ð 4å!Ø)Ý%Ø'Ü Ð3à#ô $4Ð3à#ð 4ô Ð-¨d¯i©i¨[Ð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ˆà$ V™nà!'§¡¨OÓ!<ØŸ
™
 6Ó*ññ
ð 	
r"   ©N)
r/   r0   r1   r   ÚbytesÚdictr   r   rG   r4   r5   s   @r!   r7   r7   9   s/   ø„ ôAñ
 U¨T¡\ð 
ÐCTÐW[Ñ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—   ø€ ô ‘'Ñ2°6¸:ÐG\Ó]ˆØˆ?Øð "Ÿ+™+Ð&7Ó8ˆä�¬Ô-Ø×#Ñ# FÓ+¨}Ò<Ü˜?×.Ñ.¨}Ó=¼tÔDØ˜O¨MÑ:Ñ:ð &Ø)¨-Ñ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Ó"GˆJ�wÑà °XÑcÀÐcÈWÐVbÑ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Ñ 5°aÑ 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 U¨T¡\ð FÐCTÐW[Ñ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ˆÜ˜F°lÔCˆ	ô
 ! Ó,ˆ
Ø—‘ ¨"Ó-ˆØ  JÑ.Ø",§.¡.Ð1FÓ"GˆJ�wÑð ×$Ñ$Ó&ˆØ! WÐ,ÒD°¸WÐ1DˆÙBO {°IÑ&>ÐVhÐktÐjuÐUvˆà�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 U¨T¡\ð FÐCTÐW[Ñ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%   € Ü.6°xÓ.@ÀÑ.HÖI d��[Ó!ÒIÐIùÒIs   ‘ rH   rp   r5   s   @r!   r‚   r‚   �   s[   ø„ ô/ð
Øð
Ø'+ð
ØD\ð
à	�‰ó
ñJ U¨T¡\ð JÐCTÐW[Ñ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ÜÐLÌTÐRZË^×MdÑMdÐLeÐefÐgÓhÐhr"   rH   rp   r5   s   @r!   r�   r�   ®   s[   ø„ ô+ð

Øð

Ø'+ð

ØD\ð

à	�‰ó

ñi U¨T¡\ð iÐCTÐW[Ñ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Ø 
Ñ*Ø(Ÿn™nÐ-BÓCˆ
�7ÑØ˜
Ñ"Ø —n‘n ]Ó3ˆØ�kÑ!Ø"-¨gÑ"6ˆJ�wÑØ�{Ñ"Ø#.¨xÑ#8ˆJ�xÑ ØÐ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 nŒt        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ð '×*Ñ*Ð+¨1¨V¨HÐ5ˆ
ä�‰ÐAÔBð —‘˜Ó"ˆÜÔ/Ó0ò 	ˆAØÐ! fÔ4KÑ&KÙÜ�J‰JÔ.Ô/Ü)›m×/Ñ/°
ÀN×DZÑDZÐ/Ó[ˆOÜ Ô0Ø!×&Ñ&Ó(ˆCØ—W‘W˜XÓ&ˆFØÑ! fÔ4KÒ&KÙð	ô ð&Ü&>Ð%?¸}ðNóð ð
 �XÒØ—G‘G˜GÓ$Ò*¨ˆEÜÐ!CÀEÇIÁIÈiÓDXÒDkÐ\kÐClÐmÓnÐnØ�[Ò ÜÐ!GÈÀzÐRÓSÐSà—W‘W˜YÓ'Ò-¨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ñ-& U¨T¡\ð -&ÐCTÐW[Ñ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Ü-4°VÈ{Ô-[Ð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"   