fix(volcengine): raise on unknown reasoning_effort when drop_params=False

Addresses greptile review concern: unknown reasoning_effort values
(future or misspelled) were silently dropped, which violates LiteLLM's
drop_params semantic where False should surface unsupported params as
errors instead of no-ops.

- Raise UnsupportedParamsError when reasoning_effort is unrecognized
  AND drop_params=False AND litellm.drop_params=False.
- Continue silently dropping when drop_params=True (or global flag set).
- Add test_reasoning_effort_unknown_value covering both branches.
This commit is contained in:
ctrlz526 2026-05-18 16:14:49 +08:00
parent 982d516936
commit e3ee218da5
2 changed files with 44 additions and 1 deletions

View file

@ -1,5 +1,7 @@
from typing import Optional, Union
import litellm
from litellm.exceptions import UnsupportedParamsError
from litellm.llms.openai_like.chat.transformation import OpenAILikeChatConfig
@ -103,7 +105,20 @@ class VolcEngineChatConfig(OpenAILikeChatConfig):
optional_params["thinking"] = {"type": "enabled"}
elif reasoning_effort == "auto":
optional_params["thinking"] = {"type": "auto"}
# Unknown values: silently drop (super() already handles drop_params semantics)
else:
# Unknown reasoning_effort value: respect drop_params semantics.
# When drop_params=True (or litellm.drop_params=True): silently drop.
# Otherwise: raise so callers don't silently get default thinking behavior.
if not (drop_params or litellm.drop_params):
raise UnsupportedParamsError(
status_code=400,
message=(
f"VolcEngine does not support reasoning_effort="
f"{reasoning_effort!r}. Supported values: 'none', "
f"'minimal', 'low', 'medium', 'high', 'xhigh', 'auto'. "
f"Pass drop_params=True to silently drop unknown values."
),
)
if "thinking" in optional_params:
"""

View file

@ -176,6 +176,34 @@ class TestVolcEngineConfig:
)
assert e2e["extra_body"]["thinking"] == {"type": "disabled"}
def test_reasoning_effort_unknown_value(self):
"""Unknown reasoning_effort values must respect drop_params semantics."""
import pytest
from litellm.exceptions import UnsupportedParamsError
config = VolcEngineConfig()
# drop_params=False: raise on unknown value (not silently drop)
with pytest.raises(UnsupportedParamsError) as exc_info:
config.map_openai_params(
non_default_params={"reasoning_effort": "ultra"},
optional_params={},
model="doubao-seed-1.6",
drop_params=False,
)
assert "reasoning_effort" in str(exc_info.value)
assert "ultra" in str(exc_info.value)
# drop_params=True: silently drop unknown value, no thinking written
out = config.map_openai_params(
non_default_params={"reasoning_effort": "ultra"},
optional_params={},
model="doubao-seed-1.6",
drop_params=True,
)
assert out == {}
def test_e2e_completion(self):
from openai import OpenAI