fix validation: Only set tool_choice auto if at least one tool is provided (#8568)

This commit is contained in:
Chirag Jain 2024-09-27 04:53:17 +05:30 committed by GitHub
parent e2f6f26e86
commit ee2da3e9ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 72 additions and 1 deletions

View File

@ -0,0 +1,71 @@
import pytest
from vllm.entrypoints.openai.protocol import ChatCompletionRequest
def test_chat_completion_request_with_no_tools():
# tools key is not present
request = ChatCompletionRequest.model_validate({
'messages': [{
'role': 'user',
'content': 'Hello'
}],
'model':
'facebook/opt-125m',
})
assert request.tool_choice == 'none'
# tools key is None
request = ChatCompletionRequest.model_validate({
'messages': [{
'role': 'user',
'content': 'Hello'
}],
'model':
'facebook/opt-125m',
'tools':
None
})
assert request.tool_choice == 'none'
# tools key present but empty
request = ChatCompletionRequest.model_validate({
'messages': [{
'role': 'user',
'content': 'Hello'
}],
'model':
'facebook/opt-125m',
'tools': []
})
assert request.tool_choice == 'none'
def test_chat_completion_request_with_tool_choice_but_no_tools():
with pytest.raises(ValueError,
match="When using `tool_choice`, `tools` must be set."):
ChatCompletionRequest.model_validate({
'messages': [{
'role': 'user',
'content': 'Hello'
}],
'model':
'facebook/opt-125m',
'tool_choice':
'auto'
})
with pytest.raises(ValueError,
match="When using `tool_choice`, `tools` must be set."):
ChatCompletionRequest.model_validate({
'messages': [{
'role': 'user',
'content': 'Hello'
}],
'model':
'facebook/opt-125m',
'tool_choice':
'auto',
'tools':
None
})

View File

@ -386,7 +386,7 @@ class ChatCompletionRequest(OpenAIBaseModel):
# if "tool_choice" is not specified but tools are provided,
# default to "auto" tool_choice
if "tool_choice" not in data and "tools" in data:
if "tool_choice" not in data and data.get("tools"):
data["tool_choice"] = "auto"
# if "tool_choice" is specified -- validation