mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-05 02:41:56 +00:00
perf: Optimize get_standard_logging_metadata with set intersection
- Cache StandardLoggingMetadata.__annotations__.keys() as module-level frozenset - Use set intersection to iterate only keys present in both metadata and supported keys - Single lookup for user_api_key instead of 3 separate .get() calls Results: - get_standard_logging_metadata: 1.55s → 1.41s (9.2% faster)
This commit is contained in:
parent
2cc860f3f6
commit
fc3aad8850
1 changed files with 9 additions and 10 deletions
|
|
@ -204,6 +204,10 @@ except Exception as e:
|
|||
EnterpriseStandardLoggingPayloadSetupVAR = None
|
||||
_in_memory_loggers: List[Any] = []
|
||||
|
||||
_STANDARD_LOGGING_METADATA_KEYS: frozenset = frozenset(
|
||||
StandardLoggingMetadata.__annotations__.keys()
|
||||
)
|
||||
|
||||
### GLOBAL VARIABLES ###
|
||||
|
||||
sentry_sdk_instance = None
|
||||
|
|
@ -4470,17 +4474,12 @@ class StandardLoggingPayloadSetup:
|
|||
user_api_key_auth_metadata=None,
|
||||
)
|
||||
if isinstance(metadata, dict):
|
||||
# Filter the metadata dictionary to include only the specified keys
|
||||
supported_keys = StandardLoggingMetadata.__annotations__.keys()
|
||||
for key in supported_keys:
|
||||
if key in metadata:
|
||||
clean_metadata[key] = metadata[key] # type: ignore
|
||||
for key in metadata.keys() & _STANDARD_LOGGING_METADATA_KEYS:
|
||||
clean_metadata[key] = metadata[key] # type: ignore
|
||||
|
||||
if metadata.get("user_api_key") is not None:
|
||||
if is_valid_sha256_hash(str(metadata.get("user_api_key"))):
|
||||
clean_metadata["user_api_key_hash"] = metadata.get(
|
||||
"user_api_key"
|
||||
) # this is the hash
|
||||
user_api_key = metadata.get("user_api_key")
|
||||
if user_api_key and isinstance(user_api_key, str) and is_valid_sha256_hash(user_api_key):
|
||||
clean_metadata["user_api_key_hash"] = user_api_key
|
||||
_potential_requester_metadata = metadata.get(
|
||||
"metadata", None
|
||||
) # check if user passed metadata in the sdk request - e.g. metadata for langsmith logging - https://docs.litellm.ai/docs/observability/langsmith_integration#set-langsmith-fields
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue