[Bugfix] Internal Server Error when tool_choice is incorrect. (#10567)
Signed-off-by: Varun Shenoy <varun.vinayak.shenoy@oracle.com>
This commit is contained in:
parent
4aba6e3d1a
commit
7d8ffb344f
@ -829,6 +829,20 @@ async def test_inconsistent_tool_choice_and_tools(client: openai.AsyncOpenAI,
|
|||||||
"name": "nondefined_function_name"
|
"name": "nondefined_function_name"
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
with pytest.raises(openai.BadRequestError):
|
||||||
|
await client.chat.completions.create(
|
||||||
|
model=MODEL_NAME,
|
||||||
|
messages=messages,
|
||||||
|
max_completion_tokens=1000,
|
||||||
|
tools=[{
|
||||||
|
"type": "function",
|
||||||
|
"function": {
|
||||||
|
"name": "dummy_function_name",
|
||||||
|
"description": "This is a dummy function",
|
||||||
|
"parameters": sample_json_schema
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
tool_choice={})
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
|
|||||||
@ -478,17 +478,17 @@ class ChatCompletionRequest(OpenAIBaseModel):
|
|||||||
# it matches a valid tool
|
# it matches a valid tool
|
||||||
if isinstance(data["tool_choice"], dict):
|
if isinstance(data["tool_choice"], dict):
|
||||||
valid_tool = False
|
valid_tool = False
|
||||||
specified_function = data["tool_choice"]["function"]
|
specified_function = data["tool_choice"].get("function")
|
||||||
if not specified_function:
|
if not specified_function:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Incorrectly formatted `tool_choice`. Should be like "
|
"Expected field `function` in `tool_choice`."
|
||||||
"`{\"type\": \"function\","
|
" Correct usage: `{\"type\": \"function\","
|
||||||
" \"function\": {\"name\": \"my_function\"}}`")
|
" \"function\": {\"name\": \"my_function\"}}`")
|
||||||
specified_function_name = specified_function["name"]
|
specified_function_name = specified_function.get("name")
|
||||||
if not specified_function_name:
|
if not specified_function_name:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Incorrectly formatted `tool_choice`. Should be like "
|
"Expected field `name` in `function` in `tool_choice`."
|
||||||
"`{\"type\": \"function\", "
|
"Correct usage: `{\"type\": \"function\", "
|
||||||
"\"function\": {\"name\": \"my_function\"}}`")
|
"\"function\": {\"name\": \"my_function\"}}`")
|
||||||
for tool in data["tools"]:
|
for tool in data["tools"]:
|
||||||
if tool["function"]["name"] == specified_function_name:
|
if tool["function"]["name"] == specified_function_name:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user