diff --git a/litellm/utils.py b/litellm/utils.py index 73057f140a8..cbcfa30f052 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -11012,9 +11012,7 @@ def get_requester_metadata(metadata: Mapping[str, object]): requester_metadata: Final = metadata.get("requester_metadata") if isinstance(requester_metadata, dict): - cleaned_metadata = add_openai_metadata(requester_metadata) - if cleaned_metadata: - return cleaned_metadata + return add_openai_metadata(requester_metadata) or None cleaned_metadata = add_openai_metadata(metadata) if cleaned_metadata: diff --git a/tests/unit/test_utils_get_optional_params.py b/tests/unit/test_utils_get_optional_params.py index 13a64577efb..3881cda8931 100644 --- a/tests/unit/test_utils_get_optional_params.py +++ b/tests/unit/test_utils_get_optional_params.py @@ -57,6 +57,20 @@ def test_get_requester_metadata_returns_none_for_empty(): assert get_requester_metadata(metadata) is None +@pytest.mark.parametrize( + ("metadata", "expected"), + [ + ({"user_api_key_hash": "h", "requester_metadata": {"headers": {"host": "proxy"}}}, None), + ({"user_api_key_hash": "h", "requester_metadata": {"team": "a"}}, {"team": "a"}), + ({"team": "a"}, {"team": "a"}), + ], +) +def test_get_requester_metadata_forwards_only_caller_metadata( + metadata: dict[str, object], expected: dict[str, str] | None +) -> None: + assert get_requester_metadata(metadata) == expected + + @patch("litellm.main.openai_chat_completions.completion") def test_requester_metadata_forwarded_to_openai(mock_completion): mock_completion.return_value = MagicMock()