o
    ۷i݀                     @   s   d Z ddlmZ ddlZddlmZ ddlmZ dede	e
ef dB fdd	Zdede	e
ef dB fd
dZdede	e
ef fddZdS )z
Defines internal helper methods for handling transformers and diffusers pipelines.
These are used by load_from_pipeline method in pipelines.py.
    )AnyN)Image)
componentspipelinereturnc              
      s@  zdd l  W n ty } ztd|d }~ww dtf fdd}|| dr<tjddd	d
tjdd	ddd dd dS || drWtjddd	d
tjdd	ddd dd dS || drqtjdd	dtjdd	ddd dd dS || drtjdd	dtjdd	ddd dd dS || drtjddd	d
tjdd	ddd dd dS || d rtjd!d"d	d#tjd$d	dgtjd%d	dtjd&d	dgd'd d(d dS || d)rtjd!dd	d#tjd*d	dd+d d,d dS || d-rtjdd	dtjdd	dd.d d/d dS || d0r tjdd	dtj	d1d	dd2d d3d dS || d4r;tjdd	dtjdd	dd5d d6d dS || d7rVtjdd	dtjd8d	dd9d d:d dS || d;rqtjdd	dtjd<d	dd=d d>d dS || d?rtjdd	dtjd@d	dtj
dAd	dgtjdd	ddBd dCd dS || dDrtjddEd	d
tjd$d	dgtjdFd	ddGd dHd dS || dIrtjddd	d
tjd$d	dgtjd&d	ddJd dKd dS || dLrtjddd	d
tjdMd	ddNd dOd dS || dPrtjddd	d
tjdQd	ddRd dSd dS tdTt|  )UNr   zAtransformers not installed. Please try `pip install transformers`
class_namec                       t  |d }|ot| |S Ngetattr
isinstancer   r   clstransformers L/home/ubuntu/vllm_env/lib/python3.10/site-packages/gradio/pipelines_utils.pyis_transformers_pipeline_type      zChandle_transformers_pipeline.<locals>.is_transformers_pipeline_typeAudioClassificationPipelinefilepathInputFtypelabelrenderClassr   r   c                 S      d| iS Ninputsr   ir   r   r   <lambda>        z.handle_transformers_pipeline.<locals>.<lambda>c                 S      dd | D S )Nc                 S      i | ]	}|d  |d qS r   scorer   .0r"   r   r   r   
<dictcomp>!       Bhandle_transformers_pipeline.<locals>.<lambda>.<locals>.<dictcomp>r   rr   r   r   r#   !       r    outputs
preprocesspostprocess"AutomaticSpeechRecognitionPipelineOutputc                 S   r   r   r   r!   r   r   r   r#   '   r$   c                 S      | d S Ntextr   r.   r   r   r   r#   (   r$   FeatureExtractionPipelinec                 S   r   r   r   xr   r   r   r#   .   r$   c                 S   r7   Nr   r   r.   r   r   r   r#   /   r$   FillMaskPipelineClassificationc                 S   r   r   r   r;   r   r   r   r#   5   r$   c                 S   r%   )Nc                 S   r&   	token_strr(   r   r)   r   r   r   r+   6   r,   r-   r   r.   r   r   r   r#   6   r0   ImageClassificationPipelineInput Imagec                 S   r   Nimagesr   r!   r   r   r   r#   >   r$   c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+   ?   r,   r-   r   r.   r   r   r   r#   ?   r0   QuestionAnsweringPipeline   Context)linesr   r   QuestionAnswerScorec                 S   
   | |dS )N)contextquestionr   cqr   r   r   r#   K      
 c                 S      | d | d fS Nanswerr(   r   r.   r   r   r   r#   L       SummarizationPipelineSummaryc                 S   r   r   r   r;   r   r   r   r#   R   r$   c                 S      | d d S Nr   summary_textr   r.   r   r   r   r#   S       TextClassificationPipelinec                 S      | gS r	   r   r;   r   r   r   r#   Y       c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+   Z   r,   r-   r   r.   r   r   r   r#   Z   r0   TokenClassificationPipelineEntitiesc                 S   r_   r	   r   r;   r   r   r   r#   `   r`   c                 S   s
   || dS )N)r9   entitiesr   )r/   r9   r   r   r   r#   a   s   TextGenerationPipelinec                 S   r   )Ntext_inputsr   r;   r   r   r   r#   j   r$   c                 S   rZ   Nr   generated_textr   r.   r   r   r   r#   k   r]   TranslationPipelineTranslationc                 S   r_   r	   r   r;   r   r   r   r#   q   r`   c                 S   rZ   Nr   translation_textr   r.   r   r   r   r#   r   r]   Text2TextGenerationPipelineGenerated Textc                 S   r_   r	   r   r;   r   r   r   r#   x   r`   c                 S   rZ   rf   r   r.   r   r   r   r#   y   r]   ZeroShotClassificationPipeline&Possible class names (comma-separated)zAllow multiple true classesc                 S   s   | ||dS )N)	sequencescandidate_labelsmulti_labelr   )r"   rQ   mr   r   r   r#      s   c                    s    fddt t d D S )Nc                    s"   i | ]} d  |  d | qS )labelsscoresr   r)   r.   r   r   r+      s    r-   rt   )rangelenr.   r   r.   r   r#      s   
 !DocumentQuestionAnsweringPipelineInput DocumentLabelc                 S   rM   N)imagerO   r   imgrR   r   r   r   r#      rS   c                 S   r%   )Nc                 S   r&   rV   r(   r   r)   r   r   r   r+      r,   r-   r   r.   r   r   r   r#      r0   VisualQuestionAnsweringPipelinec                 S   rM   r{   r   r}   r   r   r   r#      rS   c                 S   r%   )Nc                 S   r&   r   r   r)   r   r   r   r+      r,   r-   r   r.   r   r   r   r#      r0   ImageToTextPipelineTextc                 S   r   rD   r   r!   r   r   r   r#      r$   c                 S   rZ   rf   r   r.   r   r   r   r#      r]   ObjectDetectionPipelineObjects Detectedc                 S   r   r   r   r!   r   r   r   r#      r$   c                 S      |dd | D fS )Nc                 S   s@   g | ]}|d  d |d  d |d  d |d  d f|d fqS )boxxminyminxmaxymaxr   r   r)   r   r   r   
<listcomp>   s    




zBhandle_transformers_pipeline.<locals>.<lambda>.<locals>.<listcomp>r   )r/   r~   r   r   r   r#      
   
z(Unsupported transformers pipeline type: )r   ImportErrorstrr   Audiorz   Textbox	Dataframer   HighlightedTextCheckboxAnnotatedImage
ValueErrorr   )r   ier   r   r   r   handle_transformers_pipeline   s  






			r   c                    s  zdd l  W n ty } ztd|d }~ww dtf fdd}|| drUtjddd	tjd
dd	tjddddddtjddddddgtjdddddd dd dS || drtjddd	tjd
dd	tjddddtjdddd d!dtjddddddtjddddddgtjddddd"d d#d dS || d$rtjddd	tjd
dd	tjddddtjdd%ddtjdddd d!dtjddddddtjddddddgtjddddd&d d'd dS || d(r)tjddd	tjd
dd	tjddddtjdddd d!dtjddddddtjddddddgtjddddd)d d*d dS || d+rYtjddddtjddddddtjddddddgtjddddd,d d-d dS || d.rtjddd	tjd
dd	tjddddtjddddddtjddddddtjd/dd0d1ddgtjddddd2d d3d dS || d4rtjddd	tjd
dd	tjddddtjddddddtjddddddtjd5dd6dddgtjddddd7d d8d dS td9t|  ):Nr   z;diffusers not installed. Please try `pip install diffusers`r   c                    r   r	   r
   r   	diffusersr   r   is_diffusers_pipeline_type   r   z=handle_diffusers_pipeline.<locals>.is_diffusers_pipeline_typeStableDiffusionPipelinePromptFr   zNegative promptzNumber of inference steps     2   r   minimummaximumvaluestepzGuidance scale   g      @g      ?zGenerated Imagepil)r   r   r   c                 S   s   | |||dS )N)promptnegative_promptnum_inference_stepsguidance_scaler   )r   n_promptnum_inf_stepsg_scaler   r   r   r#      s
   z+handle_diffusers_pipeline.<locals>.<lambda>c                 S   rZ   NrE   r   r   r.   r   r   r   r#      r]   r1   StableDiffusionImg2ImgPipeliner   r   r   Strengthg?g?c                 S      | t |d||||dS N   r   )r   r|   r   r   r   strengthr   openresizer   r   r|   r   r   r   r   r   r   r#        c                 S   rZ   r   r   r.   r   r   r   r#     r]   StableDiffusionInpaintPipelinez
Mask Imagec                 S   s,   | t |dt |d||||dS )Nr   )r   r|   
mask_imager   r   r   r   r   )r   r   r|   r   r   r   r   r   r   r   r#   8  s   c                 S   rZ   r   r   r.   r   r   r   r#   G  r]    StableDiffusionDepth2ImgPipelinec                 S   r   r   r   r   r   r   r   r#   d  r   c                 S   rZ   r   r   r.   r   r   r   r#   q  r]   %StableDiffusionImageVariationPipelinec                 S   s   t | d||dS )Nr   )r|   r   r   r   )r|   r   r   r   r   r   r#     s   c                 S   rZ   r   r   r.   r   r   r   r#     r]   &StableDiffusionInstructPix2PixPipelinezImage Guidance scale   g      ?c                 S      | t |d||||dS )Nr   )r   r|   r   r   r   image_guidance_scaler   )r   r   r|   r   r   img_g_scaler   r   r   r#     r   c                 S   rZ   r   r   r.   r   r   r   r#     r]   StableDiffusionUpscalePipelinezNoise leveld   c                 S   r   )Nr   )r   r|   r   r   r   noise_levelr   )r   r   r|   r   r   r   r   r   r   r#     r   c                 S   rZ   r   r   r.   r   r   r   r#     r]   z%Unsupported diffusers pipeline type: )	r   r   r   r   r   Sliderr   r   r   )r   r   r   r   r   r   handle_diffusers_pipeline   s  



)
,
)-
)r   c              
      s  z
ddl m m W n ty } ztd|d }~ww jdkr2tjddtjddd dd	 d
S jdkrWtjdddtjddgtjddtjddgdd	 dd	 d
S jdkrztjdddtjddddddgtjdddd	 dd	 d
S jdkrtjddtj	ddd gtjddd!d	 d"d	 d
S jd#krtjddtjd$dd d%d	 d
S jd&krtjddtjddddddgtjd'dd(d	 d)d	 d
S jd*krtjddtj
d$dd d d+d,S jd-v r
tjddtjd.dtjd/dgtjd0dd1d	 d2d	 d
S jd3kr)tjddtjd4dgtjddd5d	 d6d	 d
S jd7kr@tjddtjd$dd d8d	 d
S jd9kr\tjd:d;d<tjd=d fd>d	d?d	 d
S jd@krtjd:d;d<tj	ddd gtjdd fdAd	dBd	 d
S jdCkrtjd:d;d<tjdDd fdEd	dFd	 d+d,S jdGkrtjd:d;d<tjdHd fdId	dJd	 d
S jdKkrtjd:d;d<tjdLd fdMd	dNd	 d+d,S jdOkrtjd:d;d<tjd$d fdPd	dQd	 d
S jdRkrtjd:dd<tjdSdfdTd	dUd	 d
S jdVkr+tjd:dd<tjd$dfdWd	dXd	 d
S jdYkrJtjddtjdZdgtjd$dd[d	 d\d	 d
S jd]krltjd:d^d<tjddgtjd_d fd`d	dad	 d
S jdbkrtjd:d;d<tjd$d fdcd	ddd	 d
S jdekrtjd:dd<tjd4dgtjddfdfd	dgd	 d
S jdhkrtjd:d;d<tjd4dgtjdd fdid	djd	 d
S jdkkrtjd:d;d<tjd4dgtjdLd fdld	dmd	 d+d,S tdnj )oNr   )as_url
read_audiozmtransformers_js_py not installed. Please add `transformers_js_py` to the requirements of your Gradio-Lite appz	fill-maskr   )r   r?   c                 S   r%   )Nc                 S   r&   r@   r   r)   r   r   r   r+     r,   Ehandle_transformers_js_pipeline.<locals>.<lambda>.<locals>.<dictcomp>r   r.   r   r   r   r#     r0   z1handle_transformers_js_pipeline.<locals>.<lambda>r1   zquestion-answeringrG   rH   )rI   r   rJ   rK   rL   c                 S   s   || fS r	   r   rP   r   r   r   r#     s   c                 S   rT   rU   r   r.   r   r   r   r#   	  rW   summarizationz)The maximum numbers of tokens to generater   r   r   r   rY   c                 S      | d|ifS Nmax_new_tokensr   r9   r   r   r   r   r#        c                 S   rZ   r[   r   r.   r   r   r   r#     r]   ztext-classificationzTop kr   )r   r   c                 S   r   Ntopkr   )r9   r   r   r   r   r#   %  r]   c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+   &  r,   r   r   r.   r   r   r   r#   &  r0   ztext-generationr6   c                 S   rZ   rf   r   r.   r   r   r   r#   -  r]   ztext2text-generationrm   c                 S   r   r   r   r   r   r   r   r#   <  r   c                 S   rZ   rf   r   r.   r   r   r   r#   @  r]   ztoken-classificationT)r    r2   r3   r4   postprocess_takes_inputs>   translationtranslation_xx_to_yyzSource LanguagezTarget Languageri   c                 S   s   | ||dfS )N)src_langtgt_langr   )r<   str   r   r   r#   R  r0   c                 S   rZ   rj   r   r.   r   r   r   r#   S  r]   zzero-shot-classificationro   c                 S   s   | dd | dD fS )Nc                 S      g | ]}|  qS r   stripr*   rQ   r   r   r   r   ^      Ehandle_transformers_js_pipeline.<locals>.<lambda>.<locals>.<listcomp>,split)r9   
classnamesr   r   r   r#   \  s   c                 S   s   t t| d | d ddS )Nrt   ru   F)strict)dictzipresultr   r   r   r#   `  s    zfeature-extractionc                 S   s   |   d S r=   to_numpytensorr   r   r   r#   i  r]   zdepth-estimationr   rC   )r   r   Depthc                    
    | fS r	   r   
image_pathr   r   r   r#   q  rS   c                 S   s   | d   S )Ndepthto_pilr   r   r   r   r#   r  r]   zimage-classificationc                    s    | d|ifS r   r   )r   r   r   r   r   r#   {  rW   c                 S   r%   )Nc                 S   r&   r'   r   r*   itemr   r   r   r+   |  s    r   r   r   r   r   r   r#   |  s    zimage-segmentationSegmentationc                    r   r	   r   r   r   r   r   r#     rS   c                 S   r   )Nc                 S   sF   g | ]}|d    dddddf d |d  d|d  dfqS )maskNr   g     o@r    (r(   )r   r   r   r   r   r     s    r   r   r   r   r   r   r   r#     s
   zimage-to-imagezOutput Imagec                    r   r	   r   r   r   r   r   r#     rS   c                 S      |   S r	   r   r   r   r   r   r#     r$   zobject-detectionr   c                    r   r	   r   r   r   r   r   r#     rS   c                 S   r   )Nc                 S   `   g | ],}t |d  d t |d  d t |d  d t |d  d f|d  d|d  dfqS 	r   r   r   r   r   r   r   r(   r   intr   r   r   r   r         
r   r   r   r   r   r   r#     r   zimage-feature-extractionc                    r   r	   r   r   r   r   r   r#     rS   c                 S   r   r	   r   r   r   r   r   r#     r$   zaudio-classificationr   c                       |  j jjd fS Nsampling_rate	processorfeature_extractorconfigr!   r   r   r   r   r#        c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+     r,   r   r   r.   r   r   r   r#     r0   zautomatic-speech-recognitionc                    r  r  r  r!   r
  r   r   r#     r  c                 S   r7   r8   r   r.   r   r   r   r#     r$   ztext-to-audiozSpeaker Embeddingsc                 S   r   )Nspeaker_embeddingsr   )r9   r  r   r   r   r#     r   c                 S   s   | d t | d fS )Nr  audio)npasarrayr.   r   r   r   r#     s    zdocument-question-answeringry   rz   c                    s    | |fS r	   r   r}   r   r   r   r#     r]   c                 S   rZ   )Nr   rV   r   r.   r   r   r   r#     s    zimage-to-textc                    r   r	   r   r   r   r   r   r#     rS   c                 S   rZ   rf   r   r.   r   r   r   r#     r]   zzero-shot-audio-classificationc                    s(   |  j jjd dd |dD fS )Nr  c                 S   r   r   r   r   r   r   r   r     r   r   r   )r  r  r	  r   )
audio_pathr   r
  r   r   r#     s   c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+     r,   r   r   r   r   r   r   r#     r0   zzero-shot-image-classificationc                        | dd | dD fS )Nc                 S   r   r   r   r   r   r   r   r   	  r   r   r   r   r   r   r   r   r   r#        c                 S   r%   )Nc                 S   r&   r'   r   r)   r   r   r   r+     r,   r   r   r   r   r   r   r#     r0   zzero-shot-object-detectionc                    r  )Nc                 S   r   r   r   r   r   r   r   r     r   r   r   r   r  r   r   r   r#     r  c                 S   r   )Nc                 S   r   r   r   r   r   r   r   r     r  r   r   )r   r   _r   r   r   r#     r   z.Unsupported transformers_js_py pipeline type: )transformers_js_pyr   r   r   taskr   r   rz   r   NumberJSONr   r   r   r   r   )r   r   r   )r   r   r   r   handle_transformers_js_pipeline  s  













	


















































r  )__doc__typingr   numpyr  PILr   gradior   r   r   r   r   r  r   r   r   r   <module>   s     :  &