From 32478de7a963440213ef0d547a123ffe0174ab48 Mon Sep 17 00:00:00 2001 From: Krish Dholakia Date: Thu, 15 May 2025 21:37:46 -0700 Subject: [PATCH] fix(proxy/_types.py): add missing comma for `/v2/rerank` (#10861) * fix(proxy/_types.py): add missing comma for `/v2/rerank` Enables non admins to access `/v2/rerank` endpoint * fix(proxy_track_cost_callback.py): add patch to handle scenario where both 'litellm_metadata' and 'metadata' exist --- litellm/litellm_core_utils/core_helpers.py | 20 +++++++++++++++++++ litellm/proxy/_types.py | 2 +- .../litellm_core_utils/test_core_helpers.py | 15 ++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/litellm/litellm_core_utils/core_helpers.py b/litellm/litellm_core_utils/core_helpers.py index 275c53ad308..28a0097c30d 100644 --- a/litellm/litellm_core_utils/core_helpers.py +++ b/litellm/litellm_core_utils/core_helpers.py @@ -70,6 +70,22 @@ def remove_index_from_tool_calls( return +def add_missing_spend_metadata_to_litellm_metadata( + litellm_metadata: dict, metadata: dict +) -> dict: + """ + Helper to get litellm metadata for spend tracking + + PATCH for issue where both `litellm_metadata` and `metadata` are present in the kwargs + and user_api_key values are in 'metadata'. + """ + potential_spend_tracking_metadata_substring = "user_api_key" + for key, value in metadata.items(): + if potential_spend_tracking_metadata_substring in key: + litellm_metadata[key] = value + return litellm_metadata + + def get_litellm_metadata_from_kwargs(kwargs: dict): """ Helper to get litellm metadata from all litellm request kwargs @@ -80,6 +96,10 @@ def get_litellm_metadata_from_kwargs(kwargs: dict): if litellm_params: metadata = litellm_params.get("metadata", {}) litellm_metadata = litellm_params.get("litellm_metadata", {}) + if litellm_metadata and metadata: + litellm_metadata = add_missing_spend_metadata_to_litellm_metadata( + litellm_metadata, metadata + ) if litellm_metadata: return litellm_metadata elif metadata: diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index 04a58702e45..d5e7df9071b 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -295,7 +295,7 @@ class LiteLLMRoutes(enum.Enum): # rerank "/rerank", "/v1/rerank", - "/v2/rerank" + "/v2/rerank", # realtime "/realtime", "/v1/realtime", diff --git a/tests/litellm/litellm_core_utils/test_core_helpers.py b/tests/litellm/litellm_core_utils/test_core_helpers.py index 3b7acd0d50d..215663cae80 100644 --- a/tests/litellm/litellm_core_utils/test_core_helpers.py +++ b/tests/litellm/litellm_core_utils/test_core_helpers.py @@ -20,3 +20,18 @@ def test_get_litellm_metadata_from_kwargs(): }, } assert get_litellm_metadata_from_kwargs(kwargs) == {"user_api_key": "1234567890"} + + +def test_add_missing_spend_metadata_to_litellm_metadata(): + litellm_metadata = {"test_key": "test_value"} + metadata = {"user_api_key_hash_value": "1234567890"} + kwargs = { + "litellm_params": { + "litellm_metadata": litellm_metadata, + "metadata": metadata, + }, + } + assert get_litellm_metadata_from_kwargs(kwargs) == { + "test_key": "test_value", + "user_api_key_hash_value": "1234567890", + }