o
    
۾i5C                     @   s  U d dl Z d dlmZ d dlmZmZ d dlZd dlmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ eeZeejZG dd deZG dd deZ ed Z!ee"d< G dd de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'G dd deZ(e%e(B Z)ee"d< G dd de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.G d(d) d)eZ/G d*d+ d+eZ0e-e0B Z1ee"d,< dS )-    N)
HTTPStatus)Literal	TypeAlias)HTTPException
UploadFile)Fieldmodel_validator)DeltaMessageOpenAIBaseModel	UsageInfo)VLLMValidationError)init_logger)RequestOutputKindSamplingParamsrandom_uuidc                   @   :   e Zd ZU eed< dZedB ed< dZeeB dB ed< dS )!TranscriptionResponseStreamChoicedeltaNfinish_reasonstop_reason	__name__
__module____qualname__r	   __annotations__r   strr   int r   r   c/home/ubuntu/.local/lib/python3.10/site-packages/vllm/entrypoints/openai/speech_to_text/protocol.pyr          
 r   c                   @   t   e Zd ZU edd dZeed< dZed ed< edd dZ	e
ed< eed	< ee ed
< eddZedB ed< dS )TranscriptionStreamResponsec                   C      dt   S )Nztrsc-r   r   r   r   r   <lambda>'       z$TranscriptionStreamResponse.<lambda>default_factoryidztranscription.chunkobjectc                   C      t t S Nr   timer   r   r   r   r$   )   r%   createdmodelchoicesNdefaultusage)r   r   r   r   r(   r   r   r)   r   r.   r   listr   r3   r   r   r   r   r   r"   &      
 r"   )jsontextsrtverbose_jsonvttAudioResponseFormatc                   @   s  e Zd ZU eed< 	 dZedB ed< 	 dZedB ed< 	 eddZ	eed< 	 eddZ
eed	< 	 ed
g dZeed  ed< 	 dZedB ed< 	 dZedB ed< dZedB ed< edddZeeeeB eB f dB ed< dZedB ed< 	 eddZeed< 	 dZedB ed< 	 dZedB ed< 	 dZedB ed< 	 edejejdZedB ed< 	 dZ edB ed< 	 dZ!edB ed< 	 dZ"edB ed< 	 dZ#edB ed < 	 d!d!d!d"dd#Z$eed$< 	d.d%ed&edB d'e%fd(d)Z&e'd*d+e(d,d- Z)dS )/TranscriptionRequestfileNr/   language r1   promptr6   response_formatztimestamp_granularities[])aliasr2   )wordsegmenttimestamp_granularitiesFstreamstream_include_usagestream_continuous_usage_statszWAdditional request parameters with string or numeric values, used by custom extensions.)r2   description
vllm_xargsto_language        temperaturetop_ptop_kmin_pgeleseedfrequency_penaltyrepetition_penaltypresence_penaltymax_completion_tokensg      ?r   )rV   rM   rN   rO   rP   _DEFAULT_SAMPLING_PARAMSdefault_max_tokensdefault_sampling_paramsreturnc           	      C   s   |}|d u ri }| j  }d u r|d| jd }| j }d u r(|d| jd }| j }d u r8|d| jd }| j }d u rH|d| jd }| j }d u rX|d| jd }tj||| j	|||| j
|| j| jrltjntj| jddS )NrM   rN   rO   rP   rV   T)rM   
max_tokensrT   rN   rO   rP   rU   rV   rW   output_kind
extra_args
skip_clone)rM   getrY   rN   rO   rP   rV   r   from_optionalrT   rU   rW   rF   r   DELTA
FINAL_ONLYrJ   )	selfrZ   r[   r]   rM   rN   rO   rP   rV   r   r   r   to_sampling_params   sP   



z'TranscriptionRequest.to_sampling_paramsbeforemodec                    st   t  dtrttjddddg} dd}t fdd	|D r8|s8t fd
d	|D d}td|d S )Nr=   z4Expected 'file' to be a file-like object, not 'str'.)status_codedetailrG   rH   rF   Fc                 3        | ]}t  |d V  qdS FNboolra   .0sodatar   r   	<genexpr>       zFTranscriptionRequest.validate_transcription_request.<locals>.<genexpr>c                 3        | ]}  |d r|V  qdS rm   ra   rp   rs   r   r   ru      rv   6Stream options can only be defined when `stream=True`.	parameter)	
isinstancera   r   r   r   UNPROCESSABLE_ENTITYanynextr   clsrt   stream_optsrF   invalid_paramr   rs   r   validate_transcription_request   s"   z3TranscriptionRequest.validate_transcription_requestr+   )*r   r   r   r   r   r/   r   r>   r   r@   rA   r;   rE   r4   r   rF   ro   rG   rH   rJ   dictr   floatrK   rM   rN   rO   rP   
_LONG_INFOminmaxrT   rU   rV   rW   rX   rY   r   rf   r   classmethodr   r   r   r   r   r<   3   sx   
 "		
1r<   c                   @   s&   e Zd ZU dZed ed< eed< dS )TranscriptionUsageAudiodurationtypesecondsN)r   r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   s    e Zd ZU eed< 	 eed< dS )TranscriptionResponser7   r3   N)r   r   r   r   r   r   r   r   r   r   r      s   
 r   c                   @   *   e Zd ZU eed< 	 eed< 	 eed< dS )TranscriptionWordendstartrC   Nr   r   r   r   r   r   r   r   r   r   r        
 r   c                   @   |   e Zd ZU eed< 	 eed< 	 eed< 	 eed< 	 dZedB ed< 	 eed< 	 eed< 	 eed	< 	 eed
< 	 ee ed< dS )TranscriptionSegmentr(   avg_logprobcompression_ratior   Nno_speech_probseekr   rM   r7   tokens	r   r   r   r   r   r   r   r   r4   r   r   r   r   r     *   
 r   c                   @   V   e Zd ZU eed< 	 eed< 	 eed< 	 dZee dB ed< 	 dZee	 dB ed< dS )TranscriptionResponseVerboser   r>   r7   Nsegmentswords)
r   r   r   r   r   r   r4   r   r   r   r   r   r   r   r   8     
 r   TranscriptionResponseVariantc                   @   r   )TranslationResponseStreamChoicer   Nr   r   r   r   r   r   r   r   N  r    r   c                   @   r!   )TranslationStreamResponsec                   C   r#   )Nztrsl-r   r   r   r   r   r$   U  r%   z"TranslationStreamResponse.<lambda>r&   r(   ztranslation.chunkr)   c                   C   r*   r+   r,   r   r   r   r   r$   W  r%   r.   r/   r0   Nr1   r3   )r   r   r   r   r(   r   r   r)   r   r.   r   r4   r   r3   r   r   r   r   r   r   T  r5   r   c                   @   s2  e Zd ZU eed< 	 dZedB ed< 	 eddZeed< 	 eddZ	e
ed< 	 edejejd	ZedB ed
< 	 eddZeed< 	 dZedB ed< 	 dZedB ed< 	 dZedB ed< 	 dZedB ed< dZedB ed< dZedB ed< 	 ddiZeed< 	ddededB defddZeddedd ZdS ) TranslationRequestr=   Nr/   r?   r1   r@   r6   rA   rQ   rT   rL   rM   r>   rK   FrF   rG   rH   rX   r   rY   rZ   r[   r\   c                 C   sZ   |}|d u ri }| j  }d u r|d| jd }tj||| j| jr'tjddS tj	ddS )NrM   T)rM   r]   rT   r^   r`   )
rM   ra   rY   r   rb   rT   rF   r   rc   rd   )re   rZ   r[   r]   rM   r   r   r   rf     s$   
z%TranslationRequest.to_sampling_paramsrg   rh   c                    sV   ddg}  dd}t fdd|D r)|s)t fdd|D d}td|d	 S )
NrG   rH   rF   Fc                 3   rl   rm   rn   rp   rs   r   r   ru     rv   z=TranslationRequest.validate_stream_options.<locals>.<genexpr>c                 3   rw   rm   rx   rp   rs   r   r   ru     rv   ry   rz   )ra   r~   r   r   r   r   rs   r   validate_stream_options  s   z*TranslationRequest.validate_stream_optionsr+   ) r   r   r   r   r   r/   r   r   r@   rA   r;   r   r   r   rT   r   rM   r   r>   rK   rF   ro   rG   rH   rX   rY   r   r   rf   r   r   r   r   r   r   r   r   ]  sH   
 

r   c                   @   s   e Zd ZU eed< dS )TranslationResponser7   N)r   r   r   r   r   r   r   r   r   r     s   
 r   c                   @   r   )TranslationWordr   r   rC   Nr   r   r   r   r   r     r   r   c                   @   r   )TranslationSegmentr(   r   r   r   Nr   r   r   rM   r7   r   r   r   r   r   r   r     r   r   c                   @   r   )TranslationResponseVerboser   r>   r7   Nr   r   )
r   r   r   r   r   r   r4   r   r   r   r   r   r   r   r     r   r   TranslationResponseVariant)2r-   httpr   typingr   r   torchfastapir   r   pydanticr   r   'vllm.entrypoints.openai.engine.protocolr	   r
   r   vllm.exceptionsr   vllm.loggerr   vllm.sampling_paramsr   r   
vllm.utilsr   r   loggeriinfolongr   r   r"   r;   r   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB   

 F*
	y*