This commit is contained in:
arpan sahu 2026-08-27 16:31:07 -04:00 committed by GitHub
commit b0d2c75a01
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 1 deletions

View file

@ -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", {})

View file

@ -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.