refactor(anthropic): keep drop params immutable

Signed-off-by: Hasnaat Hussain <hasnaat.hussain.2@gmail.com>
This commit is contained in:
Hasnaat Hussain 2026-08-08 15:30:53 +05:00
parent 610b1201f3
commit 13bb1b6cfc

View file

@ -7,8 +7,9 @@
import asyncio
import contextvars
from collections.abc import AsyncIterator, Coroutine, Iterator
from collections.abc import AsyncIterator, Coroutine, Iterator, Mapping, Sequence
from functools import partial
from types import MappingProxyType
from typing import Any, Final, cast
import litellm
@ -421,30 +422,30 @@ def validate_anthropic_api_metadata(metadata: dict | None = None) -> dict | None
def _drop_unsupported_anthropic_messages_params(
anthropic_messages_optional_request_params: dict,
anthropic_messages_optional_request_params: Mapping[str, Any],
model: str,
custom_llm_provider: str | None,
additional_drop_params: list[str] | None = None,
) -> dict:
additional_drop_params: Sequence[str] | None = None,
) -> Mapping[str, Any]:
from litellm.llms.anthropic.chat.transformation import AnthropicConfig
from litellm.utils import _should_drop_param
additional_drop_params = additional_drop_params or []
for k in list(anthropic_messages_optional_request_params.keys()):
if _should_drop_param(k, additional_drop_params):
anthropic_messages_optional_request_params.pop(k, None)
if not AnthropicConfig._model_supports_effort_param(model, custom_llm_provider or "anthropic"):
anthropic_messages_optional_request_params.pop("output_config", None)
if not AnthropicConfig._supports_model_capability(model, "supports_reasoning", custom_llm_provider or "anthropic"):
anthropic_messages_optional_request_params.pop("thinking", None)
if (
"context_management" in anthropic_messages_optional_request_params
and custom_llm_provider in ["vertex_ai", "bedrock"]
and "haiku" in model.lower()
):
anthropic_messages_optional_request_params.pop("context_management", None)
return anthropic_messages_optional_request_params
additional_drop_params_list: Final = additional_drop_params if isinstance(additional_drop_params, list) else None
supports_effort: Final = AnthropicConfig._model_supports_effort_param(model, custom_llm_provider or "anthropic")
supports_reasoning: Final = AnthropicConfig._supports_model_capability(
model, "supports_reasoning", custom_llm_provider or "anthropic"
)
drop_context_management: Final = custom_llm_provider in ["vertex_ai", "bedrock"] and "haiku" in model.lower()
return MappingProxyType(
{
k: v
for k, v in anthropic_messages_optional_request_params.items()
if not _should_drop_param(k, additional_drop_params_list)
and (k != "output_config" or supports_effort)
and (k != "thinking" or supports_reasoning)
and (k != "context_management" or not drop_context_management)
}
)
def anthropic_messages_handler(
@ -673,7 +674,7 @@ def anthropic_messages_handler(
)
)
should_drop_params = (
should_drop_params: Final = (
litellm.drop_params is True
or getattr(litellm_params, "drop_params", None) is True
or kwargs.get("drop_params") is True