o
    پi!$                     @   s   d Z ddlZddlmZmZmZmZmZ zddlm	Z
 W n ey)   ddl
Z
Y nw dZdZeeZG dd dZdefd	d
ZdZde
jfddZdS )z(Sampling parameters for text generation.    N)AnyDictListOptionalUniongư>i   @c                5   @   s  e Zd ZdZ																				
	
						d+dedeeeee f  deee  deeeee f  de	de	dede	de	de	de	dededee dee dee dee de
de
de
de
d eeeef  d!ee d"eeee	f  d#ee d$df4d%d&Zd'd( Zd)d* ZdS ),SamplingParamsz
    The sampling parameters.

    See docs/backend/sampling_params.md or
    https://docs.sglang.io/backend/sampling_params.html
    for the documentation.
       N      ?        r      FTmax_new_tokensstopstop_token_ids
stop_regextemperaturetop_ptop_kmin_pfrequency_penaltypresence_penaltyrepetition_penaltymin_new_tokensnjson_schemaregexebnfstructural_tag
ignore_eosskip_special_tokensspaces_between_special_tokensno_stop_trimcustom_paramsstream_interval
logit_biassampling_seedreturnc                 C   s   || _ || _|rt|| _nd | _|| _|| _|| _|| _|| _|	| _	|
| _
|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _d| j  kr^tk rfn nd| _d| _| jdkrpt| _d S d S )Nr   r	   r   r
   )r   	stop_strssetr   stop_regex_strsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   _SAMPLING_EPS	TOP_K_ALL)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%    r-   W/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/sampling/sampling_params.py__init__(   sB   

zSamplingParams.__init__c                 C   s  | j dk rtd| j  dd| j  k rdks#n td| j dd| j  kr.dks8n td| j d| jdk sB| jdkrKtd	| j dd
| j  krVdks`n td| j dd
| j  krkdksun td| j dd| j  krdksn td| j dd| jkstd| j d| j	d ur| j	dk rtd| j	 d| j| j	kstd| j	 d| j d| j
d ur| j
D ]}dt|  kr|k sn td|d  d| dq| j| j| jg}tdd |D dkrtdd S )Nr   z&temperature must be non-negative, got .r	   ztop_p must be in (0, 1], got zmin_p must be in [0, 1], got r   r
   z.top_k must be -1 (disable) or at least 1, got g       g       @z*frequency_penalty must be in [-2, 2], got z)presence_penalty must be in [-2, 2], got z*repetition_penalty must be in [0, 2], got r   z3min_new_tokens must be in [0, max_new_tokens], got z'max_new_tokens must be at least 0, got z-min_new_tokens must be in [0, max_new_tokens(z)], got z logit_bias must has keys in [0, z], got c                 s   s    | ]}|d uV  qd S Nr-   ).0xr-   r-   r.   	<genexpr>       z(SamplingParams.verify.<locals>.<genexpr>z3Only one of regex, json_schema, or ebnf can be set.)r   
ValueErrorr   r   r   r   r   r   r   r   r$   intr   r   r   sum)r,   
vocab_sizetoken_idgrammarsr-   r-   r.   verifyi   sz   






zSamplingParams.verifyc                 C   s   | j d u rg | _ d| _n0t| j tr| j g| _ d}| j D ]}|d ur1|j|dd}t|t|}qt|t|}q|| _| jd u rIg | _d| _d S t| jtrT| jg| _d}| jD ]	}t|t	|}qY|| _d S )Nr   F)add_special_tokens)
r'   stop_str_max_len
isinstancestrencodemaxlenr)   stop_regex_max_lenget_max_seq_length)r,   	tokenizerr>   stop_strstop_str_idsrD   r   r-   r-   r.   	normalize   s.   







zSamplingParams.normalize)r   NNNr	   r	   r
   r   r   r   r	   r   r   NNNNFTTFNNNN)__name__
__module____qualname____doc__r7   r   r   r@   r   floatboolr   r   r/   r<   rI   r-   r-   r-   r.   r      s    

	

A:r   	regex_strc                 C   s   t t| S r1   )_max_length_from_subpattern	sre_parseparse)rP   r-   r-   r.   rE      s   rE   
subpatternc                 C   s   d}| D ]p\}}|t jt jt jhv r|d7 }q|t jkr)|\}}}}|t|7 }q|t jkr>|\}}|tdd |D 7 }q|t jt j	hv r^|\}}}|t j
krU|t7 }q||t| 7 }q|t jkrh|d7 }qtd|  |t7 }q|S )Nr   r   c                 s   s    | ]}t |V  qd S r1   )rQ   )r2   branchr-   r-   r.   r4      r5   z._max_length_from_subpattern.<locals>.<genexpr>zGot unhandled regex token: )rR   LITERALINANY
SUBPATTERNrQ   BRANCHrB   
MAX_REPEAT
MIN_REPEAT	MAXREPEATMAX_LENATloggerwarning)rT   totaltokenvalue_inner_subpatternbranchesmax_num_repeatr-   r-   r.   rQ      s0   








rQ   )rM   loggingtypingr   r   r   r   r   
re._parser_parserrR   ImportErrorr*   r+   	getLoggerrJ   r`   r   r@   rE   r^   
SubPatternrQ   r-   r-   r-   r.   <module>   s    
 ,