
    -`ie                     t   d Z ddlZ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ZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ  ee          ZdZdZ G d de          Ze G d d                      Z G d de          Z G d deej         dd          Z! G d dej         dd          Z"dS )z(Sampling parameters for text generation.    N)field)EnumIntEnum)cached_property)	AnnotatedAny)	dataclass)VLLMValidationError)init_logger)LogitsProcessor)TokenizerLike)PydanticMsgspecMixingh㈵>g{Gz?c                       e Zd ZdZdZdZdS )SamplingTyper         N)__name__
__module____qualname__GREEDYRANDOMRANDOM_SEED     h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/sampling_params.pyr   r      s        FFKKKr   r   c                   H   e Zd ZU dZeez  dz  ed<   dZedz  ed<   dZe	e         dz  ed<   dZ
edz  ed<   dZedz  ed<   dZeed<   dZeed	<   dZeed
<   dZedz  ed<   dZedz  ed<    edd          Zedz  ed<   	  edd          Zeed<   	 d ZdefdZdefdZdS )StructuredOutputsParamsNjsonregexchoicegrammarjson_objectFdisable_fallbackdisable_any_whitespacedisable_additional_propertieswhitespace_patternstructural_tag)defaultinit_backend_backend_was_autoc           	          t          | j        du| j        du| j        du| j        du| j        du| j        dug          }|dk    rt          d| j                   |dk     rt          d| j                   dS )z1Validate that some fields are mutually exclusive.Nr   zWYou can only use one kind of structured outputs constraint but multiple are specified: zOYou must use one kind of structured outputs constraint but none are specified: )	sumr   r   r    r!   r"   r'   
ValueError__dict__)selfcounts     r   __post_init__z%StructuredOutputsParams.__post_init__5   s    	%
$&4'D( ,#4/	
 	
 199?/3}? ?   199;+/=; ;   9r   returnc                 :     t           fddD                       S )S
        Returns True if all structured-output constraint fields are None.
        c              3   <   K   | ]}t          |          d u V  d S Ngetattr.0r   r0   s     r   	<genexpr>z?StructuredOutputsParams.all_constraints_none.<locals>.<genexpr>P   sF       

 

 D%  D(

 

 

 

 

 

r   )r   r   r    r!   r"   r'   allr0   s   `r   all_constraints_nonez,StructuredOutputsParams.all_constraints_noneL   s?      

 

 

 



 

 

 

 

 
	
r   c                 :     t           fddD                       S )r5   c              3   <   K   | ]}t          |          d u V  d S r7   r8   r:   s     r   r<   zRStructuredOutputsParams.all_non_structural_tag_constraints_none.<locals>.<genexpr>`   sF       	
 	
 D%  D(	
 	
 	
 	
 	
 	
r   )r   r   r    r!   r"   r=   r?   s   `r   'all_non_structural_tag_constraints_nonez?StructuredOutputsParams.all_non_structural_tag_constraints_none\   s?      	
 	
 	
 	
	
 	
 	
 	
 	
 		
r   )r   r   r   r   strdict__annotations__r   r    listr!   r"   boolr#   r$   r%   r&   r'   r   r*   r+   r2   r@   rC   r   r   r   r   r   !   sp         #D#*t
"""E3:#FDI###GS4Z#K###"d"""#(D(((*/!4///%)d
)))!%NC$J%%% 5E:::HcDj:::N#eE>>>t>>>N  .
d 
 
 
 
 
 
 
 
 
 
 
r   r   c                       e Zd ZdZdZdZdS )RequestOutputKindr   r   r   N)r   r   r   
CUMULATIVEDELTA
FINAL_ONLYr   r   r   rJ   rJ   l   s        JEJJJr   rJ   c            >       *   e Zd ZU dZdZeed<   	 dZeed<   	 dZ	eed<   	 dZ
eed<   	 dZeed	<   	 dZeed
<   	 dZeed<   	 dZeed<   	 dZedz  ed<   	 dZeee         z  dz  ed<   	 dZee         dz  ed<   	 dZeed<   	 dZedz  ed<   	 dZeed<   	 dZedz  ed<   	 dZedz  ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZedz  ed<   	 dZ eed<   	 dZ!e"e e#j$        d !          f         dz  ed"<   	 e%j&        Z'e%ed#<   dZ(eed$<   	 dZ)eed%<    e#j*        e+&          Z,e+e         ed'<   dZ-e.dz  ed(<   	 dZ/e0eef         dz  ed)<   	 dZ1ee         dz  ed*<   	 dZ2e0eef         dz  ed+<   	 dZ3ee         dz  ed,<   	 dZ4eee                  dz  ed-<   dZ5edz  ed.<   e6ddddddddddddddddddddddde%j&        dddddfdedz  dedz  dedz  dedz  d	edz  d
edz  dedededz  deee         z  dz  dee         dz  d,ee         dz  dedededz  dededz  dedz  dedededee7         dz  d"e"e e#j$        d !          f         dz  d#e%d(e.dz  d)e0eef         e0eef         z  dz  d*ee         dz  d+e0eef         dz  d$ed/d f<d0            Z8d>d1Z9d>d2Z:d>d3Z;	 d?d4e0eef         d5edz  d/dfd6Z<d7e=d/dfd8Z>e?d/e@fd9            ZAeBd/e+e         fd:            ZCeBd/eee                  dz  fd;            ZDd@d<ZEd/efd=ZFdS )ASamplingParamsa  Sampling parameters for text generation.

    Overall, we follow the sampling parameters from the OpenAI text completion
    API (https://platform.openai.com/docs/api-reference/completions/create).
    In addition, we support beam search, which is not supported by OpenAI.
    r   n        presence_penaltyfrequency_penalty      ?repetition_penaltytemperaturetop_pr   top_kmin_pNseedstopstop_token_idsF
ignore_eos   
max_tokens
min_tokenslogprobsprompt_logprobsflat_logprobsT
detokenizeskip_special_tokensspaces_between_special_tokenslogits_processorsinclude_stop_str_in_output)getruncate_prompt_tokensoutput_kind
skip_cloneoutput_text_buffer_length)default_factory_all_stop_token_idsstructured_outputs
logit_biasallowed_token_ids
extra_args	bad_words_bad_words_token_idsskip_reading_prefix_cacher3   c                 4   |d |                                 D             }t          d"i d| dn| d|dn|d|dn|d|dn|d	|dn|d
|dn|d|d|d|d|	d|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d |d!|S )#Nc           
      l    i | ]1\  }}t          |          t          d t          d|                    2S )g      Y@g      Y)intminmax)r;   tokenbiass      r   
<dictcomp>z0SamplingParams.from_optional.<locals>.<dictcomp>"  sH       E4 E

Cs64'8'899  r   rP   r   rR   rQ   rS   rU   rT   rV   rW   rX   rY   rZ   r[   r\   ru   rh   r]   r_   r`   ra   rb   rd   re   rf   rg   rk   rl   rq   rr   rs   rt   rm   r   )itemsrO   )rP   rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   ru   rh   r]   r_   r`   ra   rb   rd   re   rf   rg   rk   rl   rq   rr   rs   rt   rm   s                                r   from_optionalzSamplingParams.from_optional   s   @ ! #-#3#3#5#5  J
   
  
  
9aa! 
$4$<SSBR 
 &7%>ccDU 

 ")  #s# 
  +2 
 ##E 
 % 
 % 
  
  
 *> 
  i 
 (B'A 
  "z! 
" "z# 
$ "z% 
& X' 
( ,O) 
* "z+ 
, !4 3- 
. +H*G/ 
0 0/1 
2 $:#93 
4 $5 
6  217 
8 "z9 
: 0/; 
< "z= 
> "z? 
  	
r   c                 F   d| j         cxk     rt          k     rNn nKt                              d| j         t          t                     t	          | j         t                    | _         | j        dk    rd | _        | j        g | _        n't          | j        t                    r| j        g| _        | j	        g | _	        | j
        g | _
        | j        du rd| _        | j        du rd| _        | j        r-| j        s&t	          d | j        D                       dz
  | _        |                                  | j         t           k     r)d| _        d| _        d| _        |                                  | j                            | j	                   | j        | j        d u| _        d S d S )	Nr   zstemperature %s is less than %s, which may cause numerical errors nan or inf in tensors. We have maxed it out to %s.ri   Tr   c              3   4   K   | ]}t          |          V  d S r7   )len)r;   ss     r   r<   z/SamplingParams.__post_init__.<locals>.<genexpr>k  s(      0K0KAQ0K0K0K0K0K0Kr   rT   rQ   )rV   	_MAX_TEMPloggerwarningr|   rZ   r[   
isinstancerD   r\   ru   ra   rb   rh   rn   _verify_args_SAMPLING_EPSrW   rX   rY   _verify_greedy_samplingrp   updaterw   r?   s    r   r2   zSamplingParams.__post_init__I  s   t++++)+++++NNL     #4#3Y??D9??DI9DII	3'' 	$DI&"$D>!DN=D  DM4''#$D  9 	PT< 	P-00K0K0K0K0K-K-Ka-OD*m++DJDJDJ((*** 	 ''(;<<<)1 .2-A-MD***	 21r   c                    t          | j        t                    s$t          dt	          | j                             | j        dk     rt          d| j         d          d| j        cxk    rdk    sn t          d| j         d          d| j        cxk    rdk    sn t          d| j         d          | j        d	k    rt          d
| j         d          | j        d	k     r t          d| j         dd| j                  d	| j
        cxk     rdk    s"n t          d| j
         dd| j
                  | j        dk     rt          d| j         d          t          | j        t                    s)t          dt	          | j                  j                   d	| j        cxk    rdk    sn t          d| j         d          | j        +| j        dk     r t          d| j         dd| j                  | j        dk     rt          d| j         d          | j        0| j        | j        k    r t          d| j         d| j         d          | j        6| j        dk    r+| j        dk     r t          d| j         dd| j                  | j        6| j        dk    r+| j        dk     r t          d| j         dd| j                  | j        5| j        dk    s| j        dk     rt          d| j         d | j                  t          | j        t*                    sJ t-          d! | j        D                       st          d"| j         d          t          | j        t*                    sJ t1          d# | j        D                       rt          d$          | j        r| j        st          d%          d S d S )&Nz!n must be an int, but is of type r   zn must be at least 1, got .g       g       @z)presence_penalty must be in [-2, 2], got z*frequency_penalty must be in [-2, 2], got rQ   z2repetition_penalty must be greater than zero, got z&temperature must be non-negative, got rV   	parametervaluerT   ztop_p must be in (0, 1], got rW   ri   z.top_k must be 0 (disable), or at least 1, got ztop_k must be an integer, got zmin_p must be in [0, 1], got z#max_tokens must be at least 1, got r_   r   z3min_tokens must be greater than or equal to 0, got z4min_tokens must be less than or equal to max_tokens=z, got z)logprobs must be non-negative or -1, got ra   z0prompt_logprobs must be non-negative or -1, got rb   z:truncate_prompt_tokens must be an integer >= 1 or -1, got rk   c              3   @   K   | ]}t          |t                    V  d S r7   )r   rz   )r;   st_ids     r   r<   z.SamplingParams._verify_args.<locals>.<genexpr>  s,      KKe:eS))KKKKKKr   z/stop_token_ids must contain only integers, got c              3      K   | ]}| V  d S r7   r   )r;   stop_strs     r   r<   z.SamplingParams._verify_args.<locals>.<genexpr>  s$      668|666666r   z$stop cannot contain an empty string.zYstop strings are only supported when detokenize is True. Set detokenize=True to use stop.)r   rP   rz   r.   typerR   rS   rU   rV   r
   rW   rX   	TypeErrorr   rY   r_   r`   ra   rb   rk   r\   rG   r>   r[   anyrd   r?   s    r   r   zSamplingParams._verify_args  s)   $&#&& 	QOdfOOPPP6A::C$&CCCDDDt,33333333TD<QTTT   t-44444444VT=SVVV   "c)).*. . .   c!!%L9ILLL'&   
 TZ&&&&3&&&&%=
===!j    :??NNNN   $*c** 	Ldj1A1A1JLL   dj''''C''''JTZJJJKKK?&4?Q+>+>%HdoHHH&o   
 ?QXdoXXX   ?&4?T_+L+LH"oH H59_H H H   =$")<)<QRARAR%LDMLLL$m     ,$**$q((%+'+ + ++*	    &2'1,,0Kb0P0P%525 521	    $-t44444KKt7JKKKKK 	X$BUXXX   $)T*****66DI66666 	ECDDD9 	T_ 	3  	 	 	 	r   c                 L    | j         dk    rt          d| j          d          d S )Nr   z,n must be 1 when using greedy sampling, got r   )rP   r.   r?   s    r   r   z&SamplingParams._verify_greedy_sampling  s0    6A::UDFUUUVVV :r   generation_configmodel_eos_token_idc                    || j                             |           |                    d          x}t          |t                    r|hnt          |          }||                    |           |rS| j                             |           | j        s4|                    | j	                   t          |          | _	        dS dS dS dS )z=Update if there are non-default values from generation_configNeos_token_id)rp   addgetr   rz   setdiscardr   r]   r\   rG   )r0   r   r   eos_idss       r   update_from_generation_configz,SamplingParams.update_from_generation_config  s     ) $(();<<< ),,^<<<GI#-gs#;#;MwiiWG!-  2333 8(//888 8NN4#6777*.w--D''' JI8 88 8r   	tokenizerc           	      "   | j         sd S g | _        | j         D ]}dD ]}|rdnd}||                                z   }                    |d          }|rJ|rb|d         | j        d         d         k    rEt	          |          t	          | j        d                   k    r| j                            |           fd| j        D             }t	          |          dk    r.t          d	j        d
z    d| dj         dd| j                   d S )N)FT  F)textadd_special_tokensr   ri   c                 @    g | ]}|D ]}|d k     s|j         k    |S )r   )max_token_id)r;   bad_words_token_idstoken_idr   s      r   
<listcomp>z8SamplingParams.update_from_tokenizer.<locals>.<listcomp>  sQ     
 
 
#/
 
 !||x)*@@@   A@@@r   zThe model vocabulary size is r   z2, but the following tokens were specified as bad: zF. All token id values should be integers satisfying: 0 <= token_id <= r   ru   r   )ru   rv   lstripencoder   appendr
   r   )r0   r   bad_wordadd_prefix_spaceprefixpromptprompt_token_idsinvalid_token_idss    `      r   update_from_tokenizerz$SamplingParams.update_from_tokenizer  s   ~ 	F$&! 	G 	GH %2 G G  08b(//"3"33#,#3#3E $4 $ $  ) G$G(+t/H/LQ/OOO,--T5Nr5R1S1SSS-445EFFFG 
 
 
 
'+'@
 
 
  !!A%%%?	0F0J ? ?+<? ? &/%;	? ? ?
 &n    &%r   c                 x    | j         t          k     rt          j        S | j        t          j        S t          j        S r7   )rV   r   r   r   rZ   r   r   r?   s    r   sampling_typezSamplingParams.sampling_type'  s3    m++&&9 ++""r   c                     | j         S r7   )rp   r?   s    r   all_stop_token_idsz!SamplingParams.all_stop_token_ids/  s    ''r   c                     | j         S r7   )rv   r?   s    r   r   z"SamplingParams.bad_words_token_ids3  s     ((r   c                     | j         rt          j        |           S | j        dnd | j        D             }t          j        | |          S )a  Deep copy, but maybe not the LogitsProcessor objects.

        LogitsProcessor objects may contain an arbitrary, nontrivial amount of
        data that is expensive to copy. However, if not copied, the processor
        needs to support parallel decoding for multiple sequences
        See https://github.com/vllm-project/vllm/issues/3087

        If skip_clone is True, uses shallow copy instead of deep copy.
        Nc                 v    i | ]6}t          |          t          |d           r|                                n|7S )clone)idhasattrr   )r;   lps     r   r   z(SamplingParams.clone.<locals>.<dictcomp>I  sK        2gb'&:&:B


  r   )memo)rm   copyrg   deepcopy)r0   logit_processor_refss     r   r   zSamplingParams.clone8  sj     ? 	#9T??" %- D 0   	 }T(<====r   c                    d                     g d| j         d| j         d| j         d| j         d| j         d| j         d| j         d	| j         d
| j	         d| j
         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d          S )Nr   zSamplingParams(n=z, presence_penalty=z, frequency_penalty=z, repetition_penalty=z, temperature=z, top_p=z, top_k=z, min_p=z, seed=z, stop=z, stop_token_ids=z, bad_words=z, include_stop_str_in_output=z, ignore_eos=z, max_tokens=z, min_tokens=z, logprobs=z, prompt_logprobs=z, skip_special_tokens=z , spaces_between_special_tokens=z, truncate_prompt_tokens=z, structured_outputs=z, extra_args=))joinrP   rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   ru   rh   r]   r_   r`   ra   rb   re   rf   rk   rq   rt   r?   s    r   __repr__zSamplingParams.__repr__P  s   - - - - - - - - - - $ 5- - - -!%!7- - - - #'"9- - - -  +	- - - -
 Z- - - - Z- - - - Z- - - - I- - - - I- - - - #1- - - - - - - - +/*I- - - - /- - - - /- - - - /- - - -  !- - - -"  $3#- - - -$ $(#;%- - - -( 1)- - - -* '+&A+- - - -, #'"9-- - - -. //- - - - - -	
r   )r3   Nr7   )r3   rO   )Gr   r   r   __doc__rP   rz   rF   rR   floatrS   rU   rV   rW   rX   rY   rZ   r[   rD   rG   r\   r]   rH   r_   r`   ra   rb   rc   rd   re   rf   rg   r   rh   rk   r   msgspecMetarJ   rK   rl   rm   rn   r   r   rp   rq   r   rr   rE   rs   rt   ru   rv   rw   staticmethodr   r   r2   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r   rO   rO   u   sh          AsJJJ  "e!!!-  #u"""- !$###> K E56E3NNNE5! D#*0#'D#S	/D
 '''1'+NDI$+++ J0Jd
CJ)HcDjL #'OS4Z&&&BM47 J+ $$$$7*.!4...E %)sTz(((5',,,,=IMIc<7<2+>+>+>&>?$FMMMJ &7%AK"AAAJ- &'s&&&$1GM#$F$F$FSFFF :>/$6===8*.JS%Z 4'...*.tCy4'.../(,JS#X%,,,
 #'ItCy4&&&2 48$tCy/D0777-1td{111),*-+.$'!'++/&*+0 !##&*$(.2:>MQ):)E=AAE.2,0 ;G
 G
:G
$,G
 !4<G
 "DL	G

 T\G
 t|G
 G
 G
 DjG
 DIo$G
 S	D(G
 9t#G
 %)G
 G
 $JG
  !G
" *#G
$ t%G
& 'G
( ")G
* (,+G
,  047-G
. !*#|w|r/B/B/B*B Cd J/G
0 '1G
2 4d:3G
4 e$tCJ'77$>5G
6  9t+7G
8 cNT)9G
: ;G
< 
=G
 G
 G
 \G
R4N 4N 4N 4Nl^ ^ ^ ^@W W W W *.8 8S>8  $J8 
	8 8 8 86'} ' ' ' ' 'R #| # # # _# (CH ( ( ( X( )T$s)_t%; ) ) ) X)> > > >0
# 
 
 
 
 
 
r   rO   T)omit_defaultsrE   c                   `    e Zd ZU dZeed<   eed<   dZeed<   dZe	ed<   dZ
e	ed	<   dZeed
<   dS )BeamSearchParamsz+Beam search parameters for text generation.
beam_widthr_   Fr]   rQ   rV   rT   length_penaltyrh   N)r   r   r   r   rz   rF   r]   rH   rV   r   r   rh   r   r   r   r   r   m  sm          65OOOOOOJKNE',,,,,,r   r   )#r   r   dataclassesr   enumr   r   	functoolsr   typingr   r   r   pydantic.dataclassesr	   vllm.exceptionsr
   vllm.loggerr   vllm.logits_processr   vllm.tokenizersr   vllm.v1.serial_utilsr   r   r   r   r   r   r   rJ   StructrO   r   r   r   r   <module>r      s   / .                % % % % % % ! ! ! ! ! ! ! !  * * * * * * / / / / / / # # # # # # / / / / / / ) ) ) ) ) ) 5 5 5 5 5 5	X			    7    G
 G
 G
 G
 G
 G
 G
 G
T       u
 u
 u
 u
 u
N	u
 u
 u
 u
p- - - - -N		- - - - - -r   