o
    )iy$                     @   s   d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	 d dl
mZm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mZ d d	lmZ d d
lmZ er\d dlmZ d dlmZ G dd dZ G dd de j!Z"e"j#ej$e"j%ej&e"j'ej(e"j)ej&iZ*dS )    N)partial)TYPE_CHECKINGAnyCallableOptionalUnion)MultiModalKwargsItemPlaceholderRange)PoolingParams)SamplingParams)
is_list_of)EngineCoreEventEngineCoreEventTypeEngineCoreRequestFinishReason)StructuredOutputRequest)ConstantList)LoRARequest)	BlockHashc                #   @   s  e Zd Z							d3dedee deee  deee  deee  dee	 d	ee
 d
ee dedee ded ded dee dedeed ged f  ddf ddZededeed ged f  dd fddZdeeee f ddfddZedefddZedefd d!Zedefd"d#Zedefd$d%Zdefd&d'Zdeedf fd(d)Zd*edefd+d,Z	d4d-ed.ee ddfd/d0Zdeee  fd1d2Z dS )5Requestr   N
request_idprompt_token_idsmulti_modal_kwargsmulti_modal_hashesmulti_modal_placeholderssampling_paramspooling_paramseos_token_idclient_indexarrival_timelora_requestr   structured_output_requestr   
cache_saltpriorityblock_hasherr   returnc                 C   s  || _ |	| _|| _|| _|| _|| _|| _|| _|
d ur|
nt | _	t
j| _d| _g | _d | _d | _|d ur;d| _n,|d urc|jd usFJ |j| _|jd urVt
j| _d| _|jd urb|jd| _ntd|| _t| j| _g | _| j | _d| _g | _d| _|| _ |pg | _!|pg | _"|pg | _#t| j"| _$| j$dk| _%t| j"t| j!ksJ | j#rt| j"t| j#ksJ t&| j| _'t&| j| _(d| _)d| _*g | _+d | _,|d urt-|| | _,| , | _+d S d S )NF   Tkv_transfer_paramsz6sampling_params and pooling_params can't both be unsetr   ).r   r   r#   r   r   r   r    r!   timer   RequestStatusWAITINGstatusZuse_structured_outputeventsZstop_reasonr'   Z
max_tokensZguided_decodingWAITING_FOR_FSM
extra_argsget
ValueErrorr   lenZnum_prompt_tokens_output_token_idscopy_all_token_idsZnum_output_placeholdersspec_token_idsZnum_computed_tokensr"   mm_positions	mm_kwargs	mm_hashesZnum_encoder_inputsZhas_encoder_inputsr   Zoutput_token_idsZall_token_idsZnum_cached_tokensnum_nans_in_logitsblock_hashesget_hash_new_full_blocksr   )selfr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$    r>   [/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/v1/request.py__init__   st   





zRequest.__init__requestc                 C   s|   |j d urt|j }t|tsJ dnd }| |j|j|j||j|j|j	|j
|j|j|j|j	r5t|j	dnd |j|j|dS )Nz3mm_kwargs was not updated in EngineCore.add_request)r   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   )r8   listr   r   r   r   r   r9   Zmm_placeholdersr   r   r   r   r    r   r"   r#   )clsrA   r$   Zmm_kwargs_lstr>   r>   r?   from_engine_core_request|   s6   

z Request.from_engine_core_request	token_idsc                 C   s^   t |tr| j| | j| n| j| | j| | jd ur-| j|   d S d S N)
isinstanceintr3   appendr5   extendr<   r;   )r=   rE   r>   r>   r?   append_output_token_ids   s   

zRequest.append_output_token_idsc                 C   s
   | j dkS )Nr   )r:   r=   r>   r>   r?   is_output_corrupted      
zRequest.is_output_corruptedc                 C   
   t | jS rF   )r2   r5   rL   r>   r>   r?   
num_tokens   rN   zRequest.num_tokensc                 C   s   t | jt | j S rF   )r2   r5   r6   rL   r>   r>   r?   num_tokens_with_spec   s   zRequest.num_tokens_with_specc                 C   rO   rF   )r2   r3   rL   r>   r>   r?   num_output_tokens   rN   zRequest.num_output_tokensc                 C      t | jS rF   )r*   is_finishedr,   rL   r>   r>   r?   rT         zRequest.is_finishedc                 C   rS   rF   )r*   get_finished_reasonr,   rL   r>   r>   r?   rV      rU   zRequest.get_finished_reasoninput_idc                 C   s"   |t | jk s	J | j| j}|S rF   )r2   r7   length)r=   rW   rP   r>   r>   r?   get_num_encoder_tokens   s   zRequest.get_num_encoder_tokens
event_type	timestampc                 C   s   | j t|| d S rF   )r-   rI   r   Z	new_event)r=   rZ   r[   r>   r>   r?   record_event   s   zRequest.record_eventc                 C   s   | j sd S | j g }| _ |S rF   )r-   )r=   r-   r>   r>   r?   take_events   s   zRequest.take_events)r   NNNNr   NrF   )!__name__
__module____qualname__strrB   rH   r   r   r	   r   r
   floatr   r@   classmethodr   rD   r   rK   propertyboolrM   rP   rQ   rR   rT   r   rV   rY   r   r\   r   r]   r>   r>   r>   r?   r      s    


	

c

r   c                   @   s   e Zd ZdZe Ze Ze Ze Z	e Z
e Ze Ze Ze Zdd Zedd defddZedd deedf fd	d
ZdS )r*   zStatus of a request.c                 C   s   | j S rF   )namerL   r>   r>   r?   __str__   s   zRequestStatus.__str__r,   r%   c                 C   s
   | t jkS rF   )r*   	PREEMPTEDr,   r>   r>   r?   rT      rN   zRequestStatus.is_finishedNc                 C   s
   t | S rF   )_FINISHED_REASON_MAPr0   ri   r>   r>   r?   rV      s   
z!RequestStatus.get_finished_reason)r^   r_   r`   __doc__enumautor+   r.   ZWAITING_FOR_REMOTE_KVSRUNNINGrh   FINISHED_STOPPEDFINISHED_LENGTH_CAPPEDFINISHED_ABORTEDFINISHED_IGNOREDrg   staticmethodre   rT   r   r   rV   r>   r>   r>   r?   r*      s(    
r*   )+rl   r)   	functoolsr   typingr   r   r   r   r   Zvllm.multimodal.inputsr   r	   Zvllm.pooling_paramsr
   Zvllm.sampling_paramsr   Z
vllm.utilsr   Zvllm.v1.enginer   r   r   r   Z!vllm.v1.structured_output.requestr   Zvllm.v1.utilsr   Zvllm.lora.requestr   Zvllm.v1.core.kv_cache_utilsr   r   IntEnumr*   ro   STOPrp   ZLENGTHrq   ZABORTrr   rj   r>   r>   r>   r?   <module>   s,    = 