-
-
Notifications
You must be signed in to change notification settings - Fork 15.5k
[Bugfix] Fix Qwen3CoderToolParser anyOf/oneOf type resolution for nullable params #37831
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
chaunceyjiang
merged 14 commits into
vllm-project:main
from
AAISSJ:fix/qwen3coder-anyof-type-resolution
Apr 1, 2026
+254
−14
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
bfbc081
[Bugfix] Fix Qwen3CoderToolParser anyOf/oneOf type resolution for nul…
AAISSJ a555f83
Handle type-as-array in anyOf/oneOf variants
AAISSJ a6c437b
Add type-as-array handling at top level and anyOf test cases
AAISSJ 8f73a5b
Fix anyOf test to use qwen3_tool_parser fixture directly
AAISSJ a60e3d5
Refactor: extract _resolve_param_type and _first_non_null_type helpers
AAISSJ 5fd2434
Add $ref schema handling in _resolve_param_type
AAISSJ 4e076bd
Add streaming e2e test for anyOf type conversion
AAISSJ 22cdf04
[Test] Add $ref coverage to streaming e2e test
AAISSJ d552b46
style: apply ruff format and fix mypy type error
af3be0c
Merge branch 'main' into fix/qwen3coder-anyof-type-resolution
AAISSJ cc3d6d3
Merge branch 'main' into fix/qwen3coder-anyof-type-resolution
AAISSJ 3792482
Merge branch 'main' into fix/qwen3coder-anyof-type-resolution
AAISSJ 48dd0db
Merge branch 'main' into fix/qwen3coder-anyof-type-resolution
AAISSJ ad1490d
Merge branch 'main' into fix/qwen3coder-anyof-type-resolution
AAISSJ File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Thanks. Could you write an end-to-end test for this?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, @chaunceyjiang
I've added a streaming e2e test (
test_extract_tool_calls_anyof_type_conversion_streaming) that exercises the full pipeline: tokenize → incremental decode →extract_tool_calls_streamingwith anyOf nullable schemas. Both non-streaming and streaming paths now have coverage for type resolution.Update: Also added
$refcoverage to the streaming e2e test — thefiltersparameter uses{"$ref": "#/$defs/SearchFilters"}to verify that$refschemas are correctly resolved to"object"in the streaming pipeline.Please let me know if there's anything else you'd like me to address.