From a06359d40aaa3005ccb853dde347ee10d28795ae Mon Sep 17 00:00:00 2001 From: Ryan Crabbe Date: Fri, 30 Jan 2026 10:06:20 -0800 Subject: [PATCH] perf: cache _get_relevant_args_to_use_for_logging() as module-level frozenset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The set of valid LLM API parameter names for logging was being rebuilt on every request from 8 OpenAI SDK type annotations + set operations. Since these are static TypedDict annotations that never change at runtime, compute once at import time and store as a class-level frozenset. Line profiler: get_standard_logging_model_parameters() dropped from 774ms to 77ms across 12K calls (90% reduction, ~25µs/req saved). --- litellm/litellm_core_utils/model_param_helper.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/litellm/litellm_core_utils/model_param_helper.py b/litellm/litellm_core_utils/model_param_helper.py index 91f2f1341cf..4d45c47c224 100644 --- a/litellm/litellm_core_utils/model_param_helper.py +++ b/litellm/litellm_core_utils/model_param_helper.py @@ -17,15 +17,16 @@ from litellm.types.rerank import RerankRequest class ModelParamHelper: + # Cached at class level — deterministic set built from static OpenAI type annotations + _relevant_logging_args: frozenset = frozenset() + @staticmethod def get_standard_logging_model_parameters( model_parameters: dict, ) -> dict: """ """ standard_logging_model_parameters: dict = {} - supported_model_parameters = ( - ModelParamHelper._get_relevant_args_to_use_for_logging() - ) + supported_model_parameters = ModelParamHelper._relevant_logging_args for key, value in model_parameters.items(): if key in supported_model_parameters: @@ -172,3 +173,8 @@ class ModelParamHelper: Get the kwargs to exclude from the cache key """ return set(["metadata"]) + + +ModelParamHelper._relevant_logging_args = frozenset( + ModelParamHelper._get_relevant_args_to_use_for_logging() +)