From 0102bd2f4ce106fc2ef10e6180d882015cc81fcd Mon Sep 17 00:00:00 2001 From: Flora Feng <4florafeng@gmail.com> Date: Tue, 7 Apr 2026 13:36:21 -0400 Subject: [PATCH] [Parser] Pass request.tools to tool parser (#38860) Signed-off-by: sfeng33 <4florafeng@gmail.com> --- vllm/entrypoints/openai/responses/serving.py | 2 +- vllm/parser/abstract_parser.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/vllm/entrypoints/openai/responses/serving.py b/vllm/entrypoints/openai/responses/serving.py index df94848e3..d11a78124 100644 --- a/vllm/entrypoints/openai/responses/serving.py +++ b/vllm/entrypoints/openai/responses/serving.py @@ -1001,7 +1001,7 @@ class OpenAIServingResponses(OpenAIServing): # Use parser to extract and create response output items if self.parser: - parser = self.parser(tokenizer) + parser = self.parser(tokenizer, request.tools) return parser.extract_response_outputs( model_output=final_output.text, model_output_token_ids=final_output.token_ids, diff --git a/vllm/parser/abstract_parser.py b/vllm/parser/abstract_parser.py index 8a12f6fe1..7e8c236aa 100644 --- a/vllm/parser/abstract_parser.py +++ b/vllm/parser/abstract_parser.py @@ -37,6 +37,7 @@ from vllm.logger import init_logger from vllm.reasoning.abs_reasoning_parsers import ReasoningParser from vllm.tokenizers import TokenizerLike from vllm.tool_parsers.abstract_tool_parser import ToolParser +from vllm.tool_parsers.utils import Tool from vllm.utils import random_uuid logger = init_logger(__name__) @@ -542,10 +543,10 @@ class _WrappedParser(DelegatingParser): reasoning_parser_cls: type[ReasoningParser] | None = None tool_parser_cls: type[ToolParser] | None = None - def __init__(self, tokenizer: TokenizerLike): + def __init__(self, tokenizer: TokenizerLike, tools: list[Tool] | None = None): super().__init__(tokenizer) # Instantiate the underlying parsers from class attributes if self.__class__.reasoning_parser_cls is not None: self._reasoning_parser = self.__class__.reasoning_parser_cls(tokenizer) if self.__class__.tool_parser_cls is not None: - self._tool_parser = self.__class__.tool_parser_cls(tokenizer) + self._tool_parser = self.__class__.tool_parser_cls(tokenizer, tools)