diff --git a/litellm/llms/anthropic/pass_through/messages/transformation.py b/litellm/llms/anthropic/pass_through/messages/transformation.py index 4869acba40c..effc257c075 100644 --- a/litellm/llms/anthropic/pass_through/messages/transformation.py +++ b/litellm/llms/anthropic/pass_through/messages/transformation.py @@ -1,5 +1,5 @@ from collections.abc import AsyncIterator, Mapping, Sequence -from typing import ClassVar, Final +from typing import ClassVar, Final, cast import httpx @@ -429,8 +429,10 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig): ), status_code=400, ) - existing_output_config: Final = optional_params.get("output_config") - explicit_effort: Final = AnthropicMessagesConfig._explicit_output_config_effort(existing_output_config) + existing_output_config: Final = cast( # cast-ok: optional_params is an untyped dict + object, optional_params.get("output_config") + ) + explicit_effort: Final = AnthropicMessagesConfig.explicit_output_config_effort(existing_output_config) resolved_effort: Final = ( explicit_effort if explicit_effort is not None @@ -446,7 +448,7 @@ class AnthropicMessagesConfig(BaseAnthropicMessagesConfig): ) @staticmethod - def _explicit_output_config_effort(output_config: object) -> str | None: + def explicit_output_config_effort(output_config: object) -> str | None: match output_config: case {"effort": str() as effort}: return effort diff --git a/litellm/llms/bedrock/messages/invoke_transformations/anthropic_claude3_transformation.py b/litellm/llms/bedrock/messages/invoke_transformations/anthropic_claude3_transformation.py index bc10adc94e4..79a6c84cb3c 100644 --- a/litellm/llms/bedrock/messages/invoke_transformations/anthropic_claude3_transformation.py +++ b/litellm/llms/bedrock/messages/invoke_transformations/anthropic_claude3_transformation.py @@ -676,14 +676,17 @@ class AmazonAnthropicClaudeMessagesConfig( clamped: Final = {"effort": effort} normalize_bedrock_opus_output_config_effort(model=model, output_config=clamped) optional_params["reasoning_effort"] = clamped["effort"] - explicit_effort: Final = AnthropicMessagesConfig._explicit_output_config_effort( - optional_params.get("output_config") + explicit_effort: Final = AnthropicMessagesConfig.explicit_output_config_effort( + cast(object, optional_params.get("output_config")) # cast-ok: optional_params is an untyped dict ) if explicit_effort is None: return clamped_explicit: Final = {"effort": explicit_effort} normalize_bedrock_opus_output_config_effort(model=model, output_config=clamped_explicit) - optional_params["output_config"] = {**optional_params["output_config"], **clamped_explicit} + optional_params["output_config"] = { # rebind-ok: in-place fill is this method's contract + **optional_params["output_config"], + **clamped_explicit, + } def transform_anthropic_messages_request( self,