o
    :/i.                  	   @   s  U d dl mZmZmZmZ d dlZd dlmZmZm	Z	 er*d dl
mZmZmZmZ neZeZeZ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 ee B eB eB Zeed< 	 eeB ee B eB Zeed< 	 eeB ee B eB Zeed< 	 G dd deZeeB Zeed< 	 eeB eB Zeed< 	 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!ddddee dedB dedB de!fd d!Z"G d"d# d#e Z#dddd$ej$dedB dedB de#fd%d&Z%e!e#B eB Z&eed'< 	 e!eB Z'eed(< 	 e!eB Z(eed)< 	 G d*d+ d+eZ)e&e)B Z*eed,< 	 e&eB Z+eed-< 	 d.e+de'fd/d0Z,d.e+de(fd1d2Z-d3ee d4edee fd5d6Z.d7e+d8e+dB d4ede)fd9d:Z/dS );    )TYPE_CHECKINGAnyLiteral	TypeAliasN)NotRequired	TypedDictassert_never)MultiModalDataDictMultiModalEncDecInputsMultiModalInputsMultiModalUUIDDictc                   @   sX   e Zd ZU dZeedB  ed< 	 eeee	f dB  ed< 	 ee
 ed< 	 ee ed< dS )_PromptOptionszh
    Additional options available to all
    [`SingletonPrompt`][vllm.inputs.data.SingletonPrompt].
    Nmulti_modal_datamm_processor_kwargsmulti_modal_uuids
cache_salt)__name__
__module____qualname____doc__r   r	   __annotations__dictstrr   r    r   r   ]/lsinfo/ai/hellotax_ai/llm_service/venv_vllm/lib/python3.10/site-packages/vllm/inputs/data.pyr      s   
 r   c                   @   s   e Zd ZU dZeed< dS )
TextPromptzSchema for a text prompt.promptN)r   r   r   r   r   r   r   r   r   r   r   :   s   
 r   c                   @   s>   e Zd ZU dZee ed< 	 ee ed< 	 eee  ed< dS )TokensPromptzSchema for a tokenized prompt.prompt_token_idsr   token_type_idsN)	r   r   r   r   listintr   r   r   r   r   r   r   r   A   s   
 r   c                   @   s*   e Zd ZU dZejed< 	 ee ed< dS )EmbedsPromptz2Schema for a prompt provided via token embeddings.prompt_embedsr   N)	r   r   r   r   torchTensorr   r   r   r   r   r   r   r"   N   s   
 
r"   DecoderOnlyPromptEncoderPromptDecoderPromptc                   @   s(   e Zd ZU dZeed< 	 edB ed< dS )ExplicitEncoderDecoderPromptz
    Schema for a pair of encoder and decoder singleton prompts.

    Note:
        This schema is not valid for decoder-only models.
    encoder_promptNdecoder_prompt)r   r   r   r   r'   r   r(   r   r   r   r   r)      s   
 r)   EncoderDecoderPromptSingletonPrompt
PromptTypec                   @   s$   e Zd ZU dZeed< 	 eed< dS )
DataPromptz
    Represents generic inputs that are converted to
    [`PromptType`][vllm.inputs.data.PromptType] by IO processor plugins.
    datadata_formatN)r   r   r   r   r   r   r   r   r   r   r   r/      s   
 r/   c                   @   s,   e Zd ZU dZee ed< 	 ee ed< dS )_InputOptionsz:
    Additional options available to all input types.
    arrival_timer   N)r   r   r   r   r   floatr   r   r   r   r   r   r2      s   
 r2   c                   @   s:   e Zd ZU dZed ed< 	 ee ed< 	 ee	 ed< dS )TokenInputszRepresents token-based inputs.tokentyper   r   N)
r   r   r   r   r   r   r    r!   r   r   r   r   r   r   r5      s   
 r5   )r   r   r   r   r   returnc                C   0   t d| d}|dur||d< |dur||d< |S )zQConstruct [`TokenInputs`][vllm.inputs.data.TokenInputs] from optional
    values.r6   )r7   r   Nr   r   )r5   )r   r   r   inputsr   r   r   token_inputs      r;   c                   @   s8   e Zd ZU dZed ed< 	 ejed< 	 ee	 ed< dS )EmbedsInputsz#Represents embeddings-based inputs.embedsr7   r#   r   N)
r   r   r   r   r   r   r$   r%   r   r   r   r   r   r   r=      s   
 
r=   r#   c                C   r9   )zSConstruct [`EmbedsInputs`][vllm.inputs.data.EmbedsInputs] from optional
    values.r>   )r7   r#   Nr   r   )r=   )r#   r   r   r:   r   r   r   embeds_inputs   r<   r?   DecoderOnlyInputsEncoderInputsDecoderInputsc                   @   s>   e Zd ZU dZed ed< eed< 	 eed< 	 ee	 ed< dS )EncoderDecoderInputsa	  
    A processed pair of encoder and decoder singleton prompts.
    [`InputPreprocessor`][vllm.inputs.preprocess.InputPreprocessor]
    which can be passed to
    [`InputProcessor`][vllm.v1.engine.input_processor.InputProcessor]
    for encoder-decoder models.
    enc_decr7   r*   r+   r3   N)
r   r   r   r   r   r   rA   rB   r   r4   r   r   r   r   rC   !  s   
 rC   ProcessorInputsSingletonInputsr:   c                 C   s4   | d dkr
t d| d dkrd| vrtd| S )Nr7   r>   =Embedding inputs are not supported for encoder-decoder models
multimodalencoder_prompt_token_idszXYou should register an encoder-decoder multi-modal processor for encoder-decoder models.)
ValueErrorRuntimeErrorr:   r   r   r   _validate_enc_inputsC  s   rM   c                 C   s   | d dkr
t d| S )Nr7   r>   rG   )rJ   rL   r   r   r   _validate_dec_inputsR  s
   rN   decoder_input_idsdecoder_start_token_idc                 C   s&   t | dks| d |kr|g|  } | S )a  
    Prepare `decoder_input_ids` for generation with encoder-decoder models,
    according to `GenerationMixin._prepare_decoder_input_ids_for_generation()`.

    Source:
    https://github.com/huggingface/transformers/blob/v5.1.0/src/transformers/generation/utils.py
    r   )len)rO   rP   r   r   r   )_prepare_decoder_input_ids_for_generation[  s   
rR   encoder_inputsdecoder_inputsc           	      C   s   t | }|d u r|}nt|}|d dkr;ddlm} t|d |dd}||d |d	|d
 |d |d d}n|d dkrItg d}|}nt| t|d ||d< |d }ra||d< td||dS )Nr7   rH   r   )	mm_inputsrI   r*   )r   r   r   	mm_kwargs	mm_hashesmm_placeholders)r   r   rV   rW   rX   r6   )r   r   rD   )r7   r*   r+   )	rM   rN   vllm.multimodal.inputsrU   r;   getr   rR   rC   )	rS   rT   rP   
enc_inputs
dec_inputsrU   enc_inputs_newdec_inputs_newr   r   r   r   build_enc_dec_inputsl  s@   
r_   )0typingr   r   r   r   r$   typing_extensionsr   r   r   rY   r	   r
   r   r   objectr   r   r   r"   r   r    r!   r&   r   r'   r(   r)   r,   r-   r.   r/   r2   r5   r;   r=   r%   r?   r@   rA   rB   rC   rE   rF   rM   rN   rR   r_   r   r   r   r   <module>   s   #
	

				
