Unify think_end_id to model_config as single source of truth (#22148)

This commit is contained in:
Liangsheng Yin
2026-04-05 03:35:38 -07:00
committed by GitHub
parent aeff9fb7c1
commit df9c831ab8
4 changed files with 8 additions and 11 deletions
@@ -204,6 +204,7 @@ def create_grammar_backend(
tokenizer, tokenizer,
vocab_size: int, vocab_size: int,
eos_token_ids: Optional[set] = None, eos_token_ids: Optional[set] = None,
think_end_id: Optional[int] = None,
) -> Optional[BaseGrammarBackend]: ) -> Optional[BaseGrammarBackend]:
name = server_args.grammar_backend name = server_args.grammar_backend
@@ -258,13 +259,11 @@ def create_grammar_backend(
else: else:
raise ValueError(f"Invalid grammar backend: {name}") raise ValueError(f"Invalid grammar backend: {name}")
if server_args.reasoning_parser and hasattr(tokenizer, "think_end_id"): if server_args.reasoning_parser and think_end_id is not None:
from sglang.srt.constrained.reasoner_grammar_backend import ( from sglang.srt.constrained.reasoner_grammar_backend import (
ReasonerGrammarBackend, ReasonerGrammarBackend,
) )
grammar_backend = ReasonerGrammarBackend( grammar_backend = ReasonerGrammarBackend(grammar_backend, think_end_id)
grammar_backend, tokenizer.think_end_id
)
return grammar_backend return grammar_backend
@@ -32,6 +32,7 @@ class GrammarManager:
scheduler.tokenizer, scheduler.tokenizer,
scheduler.model_config.vocab_size, scheduler.model_config.vocab_size,
scheduler.model_config.hf_eos_token_id, scheduler.model_config.hf_eos_token_id,
think_end_id=scheduler.model_config.think_end_id,
) )
else: else:
self.grammar_backend = None self.grammar_backend = None
+1 -5
View File
@@ -549,13 +549,9 @@ class Scheduler(
reasoning_parser = ReasoningParser( reasoning_parser = ReasoningParser(
model_type=self.server_args.reasoning_parser, stream_reasoning=False model_type=self.server_args.reasoning_parser, stream_reasoning=False
) )
self.tokenizer.think_end_id = self.tokenizer.encode( self.model_config.think_end_id = self.tokenizer.encode(
reasoning_parser.detector.think_end_token, add_special_tokens=False reasoning_parser.detector.think_end_token, add_special_tokens=False
)[0] )[0]
self._think_end_id = self.tokenizer.think_end_id
self.model_config.think_end_id = self._think_end_id
else:
self._think_end_id = None
def init_mamba_backend(self) -> None: def init_mamba_backend(self) -> None:
initialize_mamba_selective_state_update_backend(self.server_args) initialize_mamba_selective_state_update_backend(self.server_args)
@@ -558,8 +558,9 @@ class SchedulerOutputProcessorMixin:
def _maybe_update_reasoning_tokens( def _maybe_update_reasoning_tokens(
self: Scheduler, req: Req, next_token_id: Union[int, List[int]] self: Scheduler, req: Req, next_token_id: Union[int, List[int]]
): ):
if req.require_reasoning and self._think_end_id is not None: think_end_id = self.model_config.think_end_id
req.update_reasoning_tokens(next_token_id, self._think_end_id) if req.require_reasoning and think_end_id is not None:
req.update_reasoning_tokens(next_token_id, think_end_id)
def _mamba_prefix_cache_update( def _mamba_prefix_cache_update(
self: Scheduler, self: Scheduler,