mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-13 22:35:32 +08:00
[Feature] The Qwen3 reasoning parser supports guided decoding (#17466)
Signed-off-by: chaunceyjiang <chaunceyjiang@gmail.com>
This commit is contained in:
parent
0be6d05b5e
commit
2990cee95b
@ -47,6 +47,18 @@ class Qwen3ReasoningParser(ReasoningParser):
|
|||||||
"Qwen3 reasoning parser could not locate think start/end "
|
"Qwen3 reasoning parser could not locate think start/end "
|
||||||
"tokens in the tokenizer!")
|
"tokens in the tokenizer!")
|
||||||
|
|
||||||
|
def is_reasoning_end(self, input_ids: list[int]) -> bool:
|
||||||
|
return self.think_end_token_id in input_ids
|
||||||
|
|
||||||
|
def extract_content_ids(self, input_ids: list[int]) -> list[int]:
|
||||||
|
"""
|
||||||
|
Extract the content after the end tokens
|
||||||
|
"""
|
||||||
|
if self.think_end_token_id not in input_ids[:-1]:
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
return input_ids[input_ids.index(self.think_end_token_id) + 1:]
|
||||||
|
|
||||||
def extract_reasoning_content_streaming(
|
def extract_reasoning_content_streaming(
|
||||||
self,
|
self,
|
||||||
previous_text: str,
|
previous_text: str,
|
||||||
@ -88,7 +100,6 @@ class Qwen3ReasoningParser(ReasoningParser):
|
|||||||
# reasoning content continues
|
# reasoning content continues
|
||||||
return DeltaMessage(reasoning_content=delta_text)
|
return DeltaMessage(reasoning_content=delta_text)
|
||||||
elif self.think_start_token_id in delta_token_ids:
|
elif self.think_start_token_id in delta_token_ids:
|
||||||
logger.info(delta_text)
|
|
||||||
if self.think_end_token_id in delta_token_ids:
|
if self.think_end_token_id in delta_token_ids:
|
||||||
# <think> in delta, </think> in delta, extract reasoning content
|
# <think> in delta, </think> in delta, extract reasoning content
|
||||||
start_index = delta_text.find(self.think_start_token)
|
start_index = delta_text.find(self.think_start_token)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user