diff --git a/litellm/llms/gigachat/chat/transformation.py b/litellm/llms/gigachat/chat/transformation.py index 6d75c311084..20251d7ef9a 100644 --- a/litellm/llms/gigachat/chat/transformation.py +++ b/litellm/llms/gigachat/chat/transformation.py @@ -124,14 +124,16 @@ class GigaChatConfig(BaseConfig): return headers def get_supported_openai_params(self, model: str) -> list[str]: - """Return list of supported OpenAI parameters.""" + """Return list of supported OpenAI parameters. + + No stop: the GigaChat request body has no stop field. + """ return [ "stream", "temperature", "top_p", "max_tokens", "max_completion_tokens", - "stop", "tools", "tool_choice", "functions", @@ -160,9 +162,6 @@ class GigaChatConfig(BaseConfig): optional_params["top_p"] = value elif param in ("max_tokens", "max_completion_tokens"): optional_params["max_tokens"] = value - elif param == "stop": - # GigaChat doesn't support stop sequences - pass elif param == "tools": # Convert tools to functions format optional_params["functions"] = self._convert_tools_to_functions(value) diff --git a/tests/llm_translation/test_gigachat.py b/tests/llm_translation/test_gigachat.py index 3c47f692ce0..2ebfacbb69e 100644 --- a/tests/llm_translation/test_gigachat.py +++ b/tests/llm_translation/test_gigachat.py @@ -359,6 +359,36 @@ class TestGigaChatSupportedParams: assert "response_format" in supported assert "stream" in supported + def test_stop_not_supported(self, config): + """GigaChat has no stop sequences, so it must not claim `stop`. + + Claiming it suppresses the UnsupportedParamsError users rely on and the + sequences are dropped without any warning. + """ + assert "stop" not in config.get_supported_openai_params("GigaChat") + + def test_stop_raises_instead_of_being_dropped(self, config): + """Passing stop should surface an error, not vanish.""" + import litellm + from litellm.utils import get_optional_params + + with pytest.raises(litellm.UnsupportedParamsError): + get_optional_params( + model="GigaChat", custom_llm_provider="gigachat", stop=["END"] + ) + + def test_stop_still_droppable(self, config): + """With drop_params on, stop is dropped quietly - the documented escape.""" + from litellm.utils import get_optional_params + + params = get_optional_params( + model="GigaChat", + custom_llm_provider="gigachat", + stop=["END"], + drop_params=True, + ) + assert "stop" not in params + class TestGigaChatToolChoiceMapping: """Tests for tool_choice -> function_call mapping"""