mirror of
https://github.com/tiennm99/litellm.git
synced 2026-06-18 03:31:23 +00:00
7a6820defa
* perf: cache _get_relevant_args_to_use_for_logging() as module-level frozenset 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). * test: add tests for cached ModelParamHelper logging args Verify cached frozenset matches dynamic computation and that prompt content keys (messages, prompt, input) are excluded from logged model parameters.
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from litellm.litellm_core_utils.model_param_helper import ModelParamHelper
|
|
|
|
|
|
def test_cached_relevant_logging_args_matches_dynamic():
|
|
"""Verify the cached frozenset matches the dynamically computed set."""
|
|
cached = ModelParamHelper._relevant_logging_args
|
|
dynamic = ModelParamHelper._get_relevant_args_to_use_for_logging()
|
|
assert cached == dynamic
|
|
assert isinstance(cached, frozenset)
|
|
|
|
|
|
def test_get_standard_logging_model_parameters_filters():
|
|
"""Verify model parameters are filtered to only supported keys."""
|
|
params = {"temperature": 0.7, "messages": [{"role": "user"}], "max_tokens": 100}
|
|
result = ModelParamHelper.get_standard_logging_model_parameters(params)
|
|
assert "temperature" in result
|
|
assert "max_tokens" in result
|
|
assert "messages" not in result # excluded prompt content
|
|
|
|
|
|
def test_get_standard_logging_model_parameters_excludes_prompt_content():
|
|
"""Verify all prompt content keys are excluded."""
|
|
params = {
|
|
"messages": [{"role": "user", "content": "hi"}],
|
|
"prompt": "hello",
|
|
"input": "test",
|
|
"temperature": 0.5,
|
|
}
|
|
result = ModelParamHelper.get_standard_logging_model_parameters(params)
|
|
assert "messages" not in result
|
|
assert "prompt" not in result
|
|
assert "input" not in result
|
|
assert result == {"temperature": 0.5}
|