Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
vllm_cscc
Commits
14cb86c1
Unverified
Commit
14cb86c1
authored
Apr 13, 2026
by
Flora Feng
Committed by
GitHub
Apr 13, 2026
Browse files
[Refactor][Parser] Simplify parse_delta (#39728)
Signed-off-by:
sfeng33
<
4florafeng@gmail.com
>
parent
8213e8f8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
42 deletions
+36
-42
vllm/parser/abstract_parser.py
vllm/parser/abstract_parser.py
+36
-42
No files found.
vllm/parser/abstract_parser.py
View file @
14cb86c1
...
...
@@ -568,6 +568,20 @@ class DelegatingParser(Parser):
return
input_ids
return
self
.
_reasoning_parser
.
extract_content_ids
(
input_ids
)
def
_in_reasoning_phase
(
self
,
state
:
StreamState
)
->
bool
:
if
self
.
_reasoning_parser
is
None
:
return
False
if
self
.
_tool_parser
is
None
:
return
True
return
not
state
.
reasoning_ended
def
_in_tool_call_phase
(
self
,
state
:
StreamState
)
->
bool
:
if
self
.
_tool_parser
is
None
:
return
False
if
self
.
_reasoning_parser
is
None
:
return
True
return
state
.
reasoning_ended
def
parse_delta
(
self
,
delta_text
:
str
,
...
...
@@ -584,47 +598,10 @@ class DelegatingParser(Parser):
current_text
=
state
.
previous_text
+
delta_text
current_token_ids
=
state
.
previous_token_ids
+
delta_token_ids
delta_message
:
DeltaMessage
|
None
=
None
if
self
.
_reasoning_parser
and
self
.
_tool_parser
:
if
not
state
.
reasoning_ended
:
delta_message
=
self
.
extract_reasoning_streaming
(
previous_text
=
state
.
previous_text
,
current_text
=
current_text
,
delta_text
=
delta_text
,
previous_token_ids
=
state
.
previous_token_ids
,
current_token_ids
=
current_token_ids
,
delta_token_ids
=
delta_token_ids
,
)
if
self
.
is_reasoning_end
(
delta_token_ids
):
state
.
reasoning_ended
=
True
current_token_ids
=
self
.
extract_content_ids
(
delta_token_ids
)
if
delta_message
and
delta_message
.
content
:
current_text
=
delta_message
.
content
delta_message
.
content
=
None
else
:
current_text
=
""
if
state
.
reasoning_ended
:
if
not
state
.
tool_call_text_started
:
state
.
tool_call_text_started
=
True
state
.
previous_text
=
""
state
.
previous_token_ids
=
[]
delta_text
=
current_text
delta_token_ids
=
current_token_ids
delta_message
=
self
.
extract_tool_calls_streaming
(
previous_text
=
state
.
previous_text
,
current_text
=
current_text
,
delta_text
=
delta_text
,
previous_token_ids
=
state
.
previous_token_ids
,
current_token_ids
=
current_token_ids
,
delta_token_ids
=
delta_token_ids
,
request
=
request
,
# type: ignore[arg-type]
)
elif
self
.
_reasoning_parser
:
# Reasoning extraction
if
self
.
_in_reasoning_phase
(
state
):
delta_message
=
self
.
extract_reasoning_streaming
(
previous_text
=
state
.
previous_text
,
current_text
=
current_text
,
...
...
@@ -633,8 +610,24 @@ class DelegatingParser(Parser):
current_token_ids
=
current_token_ids
,
delta_token_ids
=
delta_token_ids
,
)
elif
self
.
_tool_parser
:
# Hand off remaining content to tool parser
if
self
.
_tool_parser
and
self
.
is_reasoning_end
(
delta_token_ids
):
state
.
reasoning_ended
=
True
current_token_ids
=
self
.
extract_content_ids
(
delta_token_ids
)
if
delta_message
and
delta_message
.
content
:
current_text
=
delta_message
.
content
delta_message
.
content
=
None
else
:
current_text
=
""
# Tool call extraction
if
self
.
_in_tool_call_phase
(
state
):
if
not
state
.
tool_call_text_started
:
state
.
tool_call_text_started
=
True
state
.
previous_text
=
""
state
.
previous_token_ids
=
[]
delta_text
=
current_text
delta_token_ids
=
current_token_ids
delta_message
=
self
.
extract_tool_calls_streaming
(
previous_text
=
state
.
previous_text
,
current_text
=
current_text
,
...
...
@@ -645,7 +638,8 @@ class DelegatingParser(Parser):
request
=
request
,
# type: ignore[arg-type]
)
else
:
# No parsers: pass through as content
if
self
.
_reasoning_parser
is
None
and
self
.
_tool_parser
is
None
:
delta_message
=
DeltaMessage
(
content
=
delta_text
)
state
.
previous_text
=
current_text
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment