
    -`i                     
   U d dl mZmZ d dlmZ d dlZd dlmZ eee	         ej
        gej
        f         eee	         ee	         ej
        gej
        f         z  Zeed<   	 dee         dedee         fd	Z G d
 d          ZdS )    )CallableSequence)	TypeAliasN)TokenizerLikeLogitsProcessor	bad_words	tokenizerreturnc                 j   t                      }| D ]}dD ]}|rdnd}||                                z   }|                    |d          }|r@|rS|d         |d         d         k    r;t          |          t          |d                   k    r|                    |           t          |          gS )	N)FT  F)textadd_special_tokensr   )bad_words_ids)listlstripencodelenappendNoBadWordsLogitsProcessor)r   r	   r   bad_wordadd_prefix_spaceprefixpromptprompt_token_idss           g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/logits_process.pyget_bad_words_logits_processorsr      s     &*VVM 7 7 !. 	7 	7,4SS"Fhoo///F(//VPU/VV % 7 7$Q'=+<Q+???())Sr1B-C-CCC$$%5666	7 &MBBBCC    c                       e Zd Z ed          ZdZdeee                  fdZde	e         de
j        de
j        fdZde
j        dd	fd
Zdedd	fdZd	S )r   z-infg        r   c                 "    || _         d | _        d S )N)r   	word_bias)selfr   s     r   __init__z"NoBadWordsLogitsProcessor.__init__4   s    *,0r   past_tokens_idslogitsr
   c                 $   | j         |                     |           t          j        |          }| j        D ]}t          |          dk    rt          |          t          |          dz   k    r:t          |          dz
  }|d         }|| d          }|d |         }t          |          t          |          k    sJ t          |          t          |          k    }	||xx         |	r| j        n| j        z  cc<   || j         z   |z   }|S )N)r&      r   )	r"   _init_word_biastorch
zeros_liker   r   tuple_SMALLEST_LOGIT_NEUTRAL_LOGIT)
r#   r%   r&   last_token_biasbad_word_idsprefix_lengthlast_token_idactual_prefixexpected_prefixis_matchs
             r   __call__z"NoBadWordsLogitsProcessor.__call__8   s=   
 >!   ///*622 . 	 	L<  A%%<  3#7#7!#;;;--1M(,M+]NOO<M*>M>:O}%%_)=)=====]++u_/E/EEHM***(0I$$d6I**** $.(?:r   Nc                    |j         d         }|                     |           t          j        |ft          j        |j                  | _        | j        D ],}t          |          dk    r|d         }| j	        | j        |<   -d S )Nr   )
vocab_size)dtypedevicer(   )
shape_check_token_ids_boundsr*   zerosfloatr:   r"   r   r   r-   )r#   r&   r8   r0   bad_word_ids        r   r)   z)NoBadWordsLogitsProcessor._init_word_biasY   s     \"%
$$
$;;;MV]
 
 
 !. 	C 	CL<  A%%*2..2.B{+	C 	Cr   r8   c           	          g }| j         D ](}|D ]#}|dk     s||k    r|                    |           $)t          |          dk    rt          d| d| d| d          d S )Nr   zThe model vocabulary size is z2, but the following tokens were specified as bad: zE. All token id values should be integers satisfying: 0 <= token_id < .)r   r   r   
ValueError)r#   r8   invalid_token_idsr0   token_ids        r   r<   z1NoBadWordsLogitsProcessor._check_token_ids_boundsj   s     . 	7 	7L( 7 7a<<8z#9#9%,,X6667  !!A%%2
 2 2+<2 2 %/	2 2 2   &%r   )__name__
__module____qualname__r>   r-   r.   r   intr$   r   r*   FloatTensorTensorr6   r)   r<    r   r   r   r   0   s        eFmmON1d49o 1 1 1 1!# ! 
	   BCe&7 CD C C C C"# $      r   r   )collections.abcr   r   typingr   r*   vllm.tokenizersr   r   rH   rJ   r   __annotations__strr   r   rK   r   r   <module>rQ      s$   / . . . . . . . .        ) ) ) ) ) ) d3i&45S	49el3U\ABC    DCyD%2D	/D D D D6I I I I I I I I I Ir   