
    .`i
                         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 d dlmZ dd	lmZ  e	e          Z G d
 de          ZdS )    )Sequence)PreTrainedTokenizerBase)ChatCompletionRequest)DeltaMessage)init_logger)ReasoningParser)DeepSeekR1ReasoningParser   )IdentityReasoningParserc                       e Zd ZdZdef fdZdee         defdZ	dee         dee         defdZ
dee         dee         fd	Zd
ededeedz  edz  f         fdZdedededee         dee         dee         dedz  fdZ xZS )DeepSeekV3ReasoningParserz
    V3 parser that delegates to either DeepSeekR1ReasoningParser or
    IdentityReasoningParser based on `thinking` and `separate_reasoning`.
    	tokenizerc                 b    t                      j        |g|R i | |                    di           pi }t          |                    dd                    }t          |                    dd                    }|p|}|rt	          |g|R i || _        d S t          |g|R i || _        d S )Nchat_template_kwargsthinkingFenable_thinking)super__init__getboolr	   _parserr   )selfr   argskwargschat_kwargsr   r   	__class__s          /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/reasoning/deepseek_v3_reasoning_parser.pyr   z"DeepSeekV3ReasoningParser.__init__   s    4T444V444jj!7<<B
E::;;{/@%HHII. 	O4YPPPPPPDLLL29NtNNNvNNDLLL    	input_idsreturnc                 6    | j                             |          S N)r   is_reasoning_endr   r   s     r   r#   z*DeepSeekV3ReasoningParser.is_reasoning_end(   s    |,,Y777r   	delta_idsc                 8    | j                             ||          S r"   )r   is_reasoning_end_streaming)r   r   r%   s      r   r'   z4DeepSeekV3ReasoningParser.is_reasoning_end_streaming+   s     |66y)LLLr   c                 6    | j                             |          S r"   )r   extract_content_idsr$   s     r   r)   z-DeepSeekV3ReasoningParser.extract_content_ids0   s    |//	:::r   model_outputrequestNc                 8    | j                             ||          S r"   )r   extract_reasoning)r   r*   r+   s      r   r-   z+DeepSeekV3ReasoningParser.extract_reasoning3   s     |--lGDDDr   previous_textcurrent_text
delta_textprevious_token_idscurrent_token_idsdelta_token_idsc                 @    | j                             ||||||          S r"   )r   extract_reasoning_streaming)r   r.   r/   r0   r1   r2   r3   s          r   r5   z5DeepSeekV3ReasoningParser.extract_reasoning_streaming8   s0     |77
 
 	
r   )__name__
__module____qualname____doc__r   r   r   intr   r#   r'   listr)   strr   tupler-   r   r5   __classcell__)r   s   @r   r   r      s        
O"9 O O O O O O8(3- 8D 8 8 8 8M!#M3;C=M	M M M M
;T#Y ;49 ; ; ; ;EE*?E	sTz3:%	&E E E E


 
 	

 %SM
 $C=
 "#
 
	
 
 
 
 
 
 
 
r   r   N)collections.abcr   transformersr   0vllm.entrypoints.openai.chat_completion.protocolr   'vllm.entrypoints.openai.engine.protocolr   vllm.loggerr   vllm.reasoningr   +vllm.reasoning.deepseek_r1_reasoning_parserr	   identity_reasoning_parserr   r6   loggerr    r   r   <module>rI      s    % $ $ $ $ $ 0 0 0 0 0 0      A @ @ @ @ @ # # # # # # * * * * * * Q Q Q Q Q Q > > > > > >	X		3
 3
 3
 3
 3
 3
 3
 3
 3
 3
r   