
    .`iv                     p    d dl m Z  d dlmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ  G d d          Zd	S )
    )copy)Optionalcast)CompletionOutput)RequestOutputKindSamplingParams)EngineCoreRequest)IterationStatsc                   @   e Zd ZU dZeed<   eed<   eed<   ee         ed<   ee	         ed<   e
ed<   edz  ed	<   d
eddfdZde
defdZde
deeef         fdZede
fd            Zdede	deee	         ef         fdZde
fdZeded          dede
fd            ZdS )ParentRequestzInfo, state & processing for parallel sampling request.

    Store parent request ID and sampling params.
    Facilitate generating child request sampling params.
    
request_idexternal_req_idsampling_paramschild_requestsoutput_aggregatormax_num_generation_tokensNcached_child_sampling_paramsrequestreturnc                    |j         J |j        }|j        | _        |j         | _         || _        t	                      | _        |j        t          j        k    rt          t          d           g|j        z  ng | _        d| _        d | _        d S )Nr   )r   paramsr   r   setr   output_kindr   
FINAL_ONLYr   r   nr   r   r   )selfr   r   s      t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/engine/parallel_sampling.py__init__zParentRequest.__init__$   s    &222!.!,&6.!ee  +/@/KKK "D))*_->>> 	
 *+&,0)))    indexc                     | j         j        }| j        r| j        S t          | j                   }d|_        ||| _        n
||z   |_        |S )aR  Efficiently obtain child `sampling_params`

        If `sampling_params.seed` is not `None` then
        each child request requires a unique clone of
        parent `sampling_params` with a unique seed.

        Args:
          index: index within `n` child requests

        Returns:
          Child `sampling_params` instance.
           )r   seedr   r   r   )r   r    r#   child_sampling_paramss       r   _get_child_sampling_paramsz(ParentRequest._get_child_sampling_params4   sb      #(, 	544 $T%9 : :"#<0ED-- *.!&$$r   c                 |    | d| j          }| j                            |           ||                     |          fS )zGet child request ID and sampling params.

        Args:
          index: index within `n` child requests.

        Returns:
          (request ID, sampling_params) tuple
        _)r   r   addr%   )r   r    child_req_ids      r   get_child_infozParentRequest.get_child_infoS   sI      33$/33---T<<UCCCCr   c                     | j         j        S N)r   r   )r   s    r   r   zParentRequest.n`   s    #%%r   child_request_idcompletion_outputc                    d}|                                 r&|| j        v r| j                            |           nd}| j        j        t
          j        k    r|rg n|g}n|| j        |j        <   | j        rg n| j        }| j         }||fS )NFT)	finishedr   remover   r   r   r   r   r    )r   r-   r.   already_finished_and_returnedoutputsr0   s         r   get_outputszParentRequest.get_outputsd   s    
 /4%%%'' 	54#666#**+;<<<<
 15-+/@/KKK :Rbb@Q?RGG ?PD"#4#:; /KbbT5KG**  r   num_generation_tokensc                 D    t          || j                  | _        | j        S r,   )maxr   )r   r5   s     r   observe_num_generation_tokensz+ParentRequest.observe_num_generation_tokens   s'    ),!4#A*
 *
& --r   
parent_reqiteration_statsc                     | | j         nd}| |                     |          }| | j        s6|j                            |           |j                            |           d S d S )Nr"   )r   r8   r   max_num_generation_tokens_iterappendn_params_iter)r9   r:   r5   n_params       r   observe_finished_requestz&ParentRequest.observe_finished_request   s     #-"8*,,a!$.$L$L%% %!
 Z%>:AABWXXX)0099999 r   )__name__
__module____qualname____doc__str__annotations__r   r   listr   intr	   r   r%   tupler*   propertyr   boolr4   r8   staticmethodr   r
   r@    r   r   r   r      s          OOO#### H ,----  #""" #14"77771 1 1d 1 1 1 1 %% 
% % % %>DC DE#~2E,F D D D D &3 & & & X&!! ,! 
t$%t+	,	! ! ! !8.3 . . . . :_-:':  #: : : \: : :r   r   N)r   typingr   r   vllm.outputsr   vllm.sampling_paramsr   r   vllm.v1.enginer	   vllm.v1.metrics.statsr
   r   rM   r   r   <module>rS      s          ! ! ! ! ! ! ! ! ) ) ) ) ) ) B B B B B B B B , , , , , , 0 0 0 0 0 0I: I: I: I: I: I: I: I: I: I:r   