From 4cfc30117a2dc6e1d2afba5f1a1993d4308fe6b1 Mon Sep 17 00:00:00 2001 From: shin-bot-litellm Date: Sat, 31 Jan 2026 17:59:46 +0000 Subject: [PATCH] litellm_fix: handle empty dict for web_search_options in Nova grounding The condition `value and isinstance(value, dict)` fails for empty dicts because `{}` is falsy in Python. Users commonly pass `web_search_options={}` to enable Nova grounding without specifying additional options. Changed the condition to `isinstance(value, dict)` which correctly handles both empty and non-empty dicts. Fixes failing tests: - test_bedrock_nova_grounding_async - test_bedrock_nova_grounding_request_transformation - test_bedrock_nova_grounding_web_search_options_non_streaming - test_bedrock_nova_grounding_with_function_tools --- litellm/llms/bedrock/chat/converse_transformation.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/litellm/llms/bedrock/chat/converse_transformation.py b/litellm/llms/bedrock/chat/converse_transformation.py index 0d29c1f01aa..d4e4d3591ba 100644 --- a/litellm/llms/bedrock/chat/converse_transformation.py +++ b/litellm/llms/bedrock/chat/converse_transformation.py @@ -805,7 +805,9 @@ def map_openai_params( if bedrock_tier in ("default", "flex", "priority"): optional_params["serviceTier"] = {"type": bedrock_tier} - if param == "web_search_options" and value and isinstance(value, dict): + if param == "web_search_options" and isinstance(value, dict): + # Note: we use `isinstance(value, dict)` instead of `value and isinstance(value, dict)` + # because empty dict {} is falsy but is a valid way to enable Nova grounding grounding_tool = self._map_web_search_options(value, model) if grounding_tool is not None: optional_params = self._add_tools_to_optional_params(