perf: cache request.url.path in _get_metadata_variable_name (add_litellm_data_to_request)

Cache request.url.path once instead of accessing it 6 times (2 in
assistants check + 4 in LITELLM_METADATA_ROUTES loop). Reduces
per-call time from 47µs to 20µs (-58%).

Also inline the assistants API check to avoid function call overhead.

Adds 8 tests for _get_metadata_variable_name covering all return paths.
This commit is contained in:
Ryan Crabbe 2026-02-05 10:34:53 -08:00
parent 0649720f79
commit b4b27203fc
2 changed files with 47 additions and 3 deletions

View file

@ -74,12 +74,14 @@ def _get_metadata_variable_name(request: Request) -> str:
For all /thread or /assistant endpoints we need to call this "litellm_metadata"
For ALL other endpoints we call this "metadata
For ALL other endpoints we call this "metadata"
"""
if RouteChecks._is_assistants_api_request(request):
path = request.url.path
if "thread" in path or "assistant" in path:
return "litellm_metadata"
if any(route in request.url.path for route in LITELLM_METADATA_ROUTES):
if any(route in path for route in LITELLM_METADATA_ROUTES):
return "litellm_metadata"
return "metadata"

View file

@ -15,6 +15,7 @@ from litellm.proxy.litellm_pre_call_utils import (
LiteLLMProxyRequestSetup,
_get_dynamic_logging_metadata,
_get_enforced_params,
_get_metadata_variable_name,
_update_model_if_key_alias_exists,
add_guardrails_from_policy_engine,
add_litellm_data_to_request,
@ -47,6 +48,47 @@ def test_check_if_token_is_service_account():
assert check_if_token_is_service_account(other_metadata_token) == False
class TestGetMetadataVariableName:
"""Tests for _get_metadata_variable_name()"""
def _make_request(self, path: str) -> MagicMock:
request = MagicMock(spec=Request)
request.url.path = path
return request
def test_returns_litellm_metadata_for_thread_routes(self):
request = self._make_request("/v1/threads/thread_123/messages")
assert _get_metadata_variable_name(request) == "litellm_metadata"
def test_returns_litellm_metadata_for_assistant_routes(self):
request = self._make_request("/v1/assistants/asst_123")
assert _get_metadata_variable_name(request) == "litellm_metadata"
def test_returns_litellm_metadata_for_batches_route(self):
request = self._make_request("/v1/batches")
assert _get_metadata_variable_name(request) == "litellm_metadata"
def test_returns_litellm_metadata_for_messages_route(self):
request = self._make_request("/v1/messages")
assert _get_metadata_variable_name(request) == "litellm_metadata"
def test_returns_litellm_metadata_for_files_route(self):
request = self._make_request("/v1/files")
assert _get_metadata_variable_name(request) == "litellm_metadata"
def test_returns_metadata_for_chat_completions(self):
request = self._make_request("/chat/completions")
assert _get_metadata_variable_name(request) == "metadata"
def test_returns_metadata_for_completions(self):
request = self._make_request("/v1/completions")
assert _get_metadata_variable_name(request) == "metadata"
def test_returns_metadata_for_embeddings(self):
request = self._make_request("/v1/embeddings")
assert _get_metadata_variable_name(request) == "metadata"
def test_get_enforced_params_for_service_account_settings():
"""
Test that service account enforced params are only added to service account keys