o
    
Û¾i   ã                
   @   s¬   d dl Z edƒZde jdeee  dee ddfdd„Zde jdeeeee  f deee  ddfd	d
„Zde jdeeeee  f deee  dee ddf
dd„Z	dS )é    Nz-infÚlogitsÚbad_words_token_idsÚpast_tokens_idsÚreturnc                 C   s‚   |D ]<}t |ƒt |ƒd krqt |ƒd }|d }|dkr$|| d … ng }|d |… }t |ƒt |ƒks6J ‚||kr>t| |< qd S )Né   éÿÿÿÿr   )ÚlenÚ_SMALLEST_LOGIT)r   r   r   Úbad_word_idsÚprefix_lengthÚlast_token_idÚactual_prefixÚexpected_prefix© r   úP/home/ubuntu/.local/lib/python3.10/site-packages/vllm/v1/sample/ops/bad_words.pyÚ_apply_bad_words_single_batch	   s   €ôr   c                 C   s*   |  ¡ D ]\}}t| | ||| ƒ qd S )N)Úitemsr   )r   r   r   ÚiÚbad_words_idsr   r   r   Úapply_bad_words   s   ÿr   Únum_draft_tokensc           
      C   sv   d}t |ƒ}t|ƒD ].\}}| |¡ }d ur4t||| ƒD ]}	t| |	 |||	 ƒ q|d8 }|s4 d S ||7 }q
d S )Nr   r   )r   Ú	enumerateÚgetÚranger   )
r   r   r   r   Ú	start_idxÚ	remainingr   Únr   Ú	draft_idxr   r   r   Úapply_bad_words_with_drafts&   s   ý
õr   )
ÚtorchÚfloatr	   ÚTensorÚlistÚintr   Údictr   r   r   r   r   r   Ú<module>   s>   ÿ
þý
üÿþ
ý
ü	ÿþ
ýüû