From 7cbebbf02bdc7005f03ce674be7110be52b6d094 Mon Sep 17 00:00:00 2001 From: ArthurAAM <100235777+ArthurAAM@users.noreply.github.com> Date: Tue, 25 Aug 2026 18:15:05 -0300 Subject: [PATCH] revert(vertex_ai): keep the optional_params reassignment in the request build Naming the resolved channel into a local types its values as object, which puts reportArgumentType 20 errors over its budget because the surrounding request build still reads an untyped dict. Typing that whole flow belongs in its own PR. --- .../llms/vertex_ai/gemini/transformation.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/litellm/llms/vertex_ai/gemini/transformation.py b/litellm/llms/vertex_ai/gemini/transformation.py index 95992fc3fa2..695e5908fdd 100644 --- a/litellm/llms/vertex_ai/gemini/transformation.py +++ b/litellm/llms/vertex_ai/gemini/transformation.py @@ -1185,7 +1185,7 @@ def _transform_request_body( resolved_params: Final = resolve_response_schema_channel( optional_params=optional_params, litellm_params=litellm_params, model=model ) - request_params: Final = { + optional_params = { k: v for k, v in resolved_params.items() if k not in remove_keys and k != VERTEX_AI_USE_RESPONSE_JSON_SCHEMA_PARAM @@ -1200,18 +1200,18 @@ def _transform_request_body( content = litellm.VertexGeminiConfig()._transform_messages( messages=messages, model=model, litellm_params=litellm_params ) - tools: Final[Tools | None] = request_params.pop("tools", None) - tool_choice: Final[ToolConfig | None] = request_params.pop("tool_choice", None) - include_server_side_tool_invocations: bool = request_params.pop("include_server_side_tool_invocations", False) - safety_settings: list[SafetSettingsConfig] | None = request_params.pop("safety_settings", None) + tools: Final[Tools | None] = optional_params.pop("tools", None) + tool_choice: Final[ToolConfig | None] = optional_params.pop("tool_choice", None) + include_server_side_tool_invocations: bool = optional_params.pop("include_server_side_tool_invocations", False) + safety_settings: list[SafetSettingsConfig] | None = optional_params.pop("safety_settings", None) # Drop output_config as it's not supported by Vertex AI - request_params.pop("output_config", None) + optional_params.pop("output_config", None) config_fields: Final = GenerationConfig.__annotations__.keys() # labels: optional explicit param and/or metadata.requester_metadata (OpenAI metadata) - labels: Final = pop_vertex_request_labels(request_params, litellm_params) + labels: Final = pop_vertex_request_labels(optional_params, litellm_params) - filtered_params = {k: v for k, v in request_params.items() if _get_equivalent_key(k, set(config_fields))} + filtered_params = {k: v for k, v in optional_params.items() if _get_equivalent_key(k, set(config_fields))} generation_config: Final[GenerationConfig | None] = GenerationConfig(**filtered_params) @@ -1247,7 +1247,7 @@ def _transform_request_body( if cached_content is not None: data["cachedContent"] = cached_content - if service_tier := request_params.pop("service_tier", None): + if service_tier := optional_params.pop("service_tier", None): if isinstance(service_tier, str): if service_tier.lower() == "default": data["serviceTier"] = "standard" @@ -1259,7 +1259,7 @@ def _transform_request_body( # Only add labels for Vertex AI endpoints (not Google GenAI/AI Studio) and only if non-empty if labels and custom_llm_provider != LlmProviders.GEMINI: data["labels"] = labels - _pop_and_merge_extra_body(data, request_params) + _pop_and_merge_extra_body(data, optional_params) _rewrite_google_maps_response_format(data) except Exception as e: raise e