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"},
|
"required": {"type": "any"},
|
||||||
"none": {"type": "none"},
|
"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):
|
elif isinstance(tool_choice, dict):
|
||||||
if tool_choice.get("type") == "function":
|
if tool_choice.get("type") == "function":
|
||||||
func: Final = tool_choice.get("function", {})
|
func: Final = tool_choice.get("function", {})
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,21 @@ class TestSnowflakeToolTransformation:
|
||||||
f"got {transformed_request['tool_choice']}"
|
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):
|
def test_transform_response_with_tool_calls(self):
|
||||||
"""
|
"""
|
||||||
Test that standard OpenAI tool_calls response format is parsed correctly.
|
Test that standard OpenAI tool_calls response format is parsed correctly.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue