[Frontend] Expand tools even if tool_choice="none" (#17177)
Signed-off-by: okada shintarou <okada@preferred.jp>
This commit is contained in:
@@ -62,6 +62,7 @@ class OpenAIServingChat(OpenAIServing):
|
||||
return_tokens_as_token_ids: bool = False,
|
||||
reasoning_parser: str = "",
|
||||
enable_auto_tools: bool = False,
|
||||
expand_tools_even_if_tool_choice_none: bool = False,
|
||||
tool_parser: Optional[str] = None,
|
||||
enable_prompt_tokens_details: bool = False,
|
||||
enable_force_include_usage: bool = False,
|
||||
@@ -110,6 +111,8 @@ class OpenAIServingChat(OpenAIServing):
|
||||
raise TypeError("Error: --enable-auto-tool-choice requires "
|
||||
f"tool_parser:'{tool_parser}' which has not "
|
||||
"been registered") from e
|
||||
self.expand_tools_even_if_tool_choice_none = (
|
||||
expand_tools_even_if_tool_choice_none)
|
||||
|
||||
self.enable_prompt_tokens_details = enable_prompt_tokens_details
|
||||
self.enable_force_include_usage = enable_force_include_usage
|
||||
@@ -175,9 +178,24 @@ class OpenAIServingChat(OpenAIServing):
|
||||
"--enable-auto-tool-choice and --tool-call-parser to be set"
|
||||
)
|
||||
|
||||
tool_dicts = None if request.tools is None else [
|
||||
tool.model_dump() for tool in request.tools
|
||||
]
|
||||
if request.tools is None:
|
||||
tool_dicts = None
|
||||
elif (request.tool_choice == "none"
|
||||
and not self.expand_tools_even_if_tool_choice_none):
|
||||
if len(request.tools) > 0:
|
||||
logger.warning_once(
|
||||
"Tools are specified but tool_choice is set to 'none' "
|
||||
"and --expand-tools-even-if-tool-choice-none is not "
|
||||
"enabled. Tool definitions will be excluded from the "
|
||||
"prompt. This behavior will change in vLLM v0.10 where "
|
||||
"tool definitions will be included by default even "
|
||||
"with tool_choice='none'. To adopt the new behavior "
|
||||
"now, use --expand-tools-even-if-tool-choice-none. "
|
||||
"To suppress this warning, either remove tools from "
|
||||
"the request or set tool_choice to a different value.")
|
||||
tool_dicts = None
|
||||
else:
|
||||
tool_dicts = [tool.model_dump() for tool in request.tools]
|
||||
|
||||
(
|
||||
conversation,
|
||||
|
||||
Reference in New Issue
Block a user