mirror of
https://github.com/BerriAI/litellm.git
synced 2026-08-28 05:25:59 +00:00
fix(snowflake): reject invalid Claude tool_choice strings
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: arpan sahu <28574248+arpansahu@users.noreply.github.com>
This commit is contained in:
parent
d8595cb647
commit
6f4fbe4121
2 changed files with 21 additions and 1 deletions
|
|
@ -322,7 +322,12 @@ class SnowflakeConfig(SnowflakeBaseConfig, OpenAIGPTConfig):
|
|||
"required": {"type": "any"},
|
||||
"none": {"type": "none"},
|
||||
}
|
||||
return mapping.get(tool_choice, {"type": "auto"})
|
||||
if tool_choice not in mapping:
|
||||
raise ValueError(
|
||||
"Unsupported tool_choice value for Snowflake Claude model: "
|
||||
f"{tool_choice!r}. Expected one of: auto, required, none."
|
||||
)
|
||||
return mapping[tool_choice]
|
||||
elif isinstance(tool_choice, dict):
|
||||
if tool_choice.get("type") == "function":
|
||||
func: Final = tool_choice.get("function", {})
|
||||
|
|
|
|||
|
|
@ -118,6 +118,21 @@ class TestSnowflakeToolTransformation:
|
|||
f"got {transformed_request['tool_choice']}"
|
||||
)
|
||||
|
||||
def test_claude_rejects_invalid_string_tool_choice(self):
|
||||
"""
|
||||
Test that invalid string tool_choice values are not silently downgraded to auto.
|
||||
"""
|
||||
config = SnowflakeConfig()
|
||||
|
||||
with pytest.raises(ValueError, match="Unsupported tool_choice value"):
|
||||
config.transform_request(
|
||||
model="snowflake/claude-sonnet-4-5",
|
||||
messages=[{"role": "user", "content": "Test"}],
|
||||
optional_params={"tool_choice": "requried"},
|
||||
litellm_params={},
|
||||
headers={},
|
||||
)
|
||||
|
||||
def test_transform_response_with_tool_calls(self):
|
||||
"""
|
||||
Test that standard OpenAI tool_calls response format is parsed correctly.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue