From 760e55826a65955e2189456b0d4956d67e688183 Mon Sep 17 00:00:00 2001 From: Tai An Date: Fri, 8 May 2026 03:31:49 -0700 Subject: [PATCH] fix(opentelemetry): JSON-serialize dict metadata fields for OTEL span attributes (#27451) (#27455) Squash-merged by litellm-agent from Anai-Guo's PR. --- litellm/integrations/opentelemetry.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/litellm/integrations/opentelemetry.py b/litellm/integrations/opentelemetry.py index 77833e5de0f..ea2d0e38da5 100644 --- a/litellm/integrations/opentelemetry.py +++ b/litellm/integrations/opentelemetry.py @@ -876,8 +876,13 @@ class OpenTelemetry(CustomLogger): "mcp_tool_call_metadata", "vector_store_request_metadata", ]: - if md.get(key) is not None: - common_attrs[f"metadata.{key}"] = str(md[key]) + value = md.get(key) + if value is None: + continue + if isinstance(value, (dict, list)): + common_attrs[f"metadata.{key}"] = safe_dumps(value) + else: + common_attrs[f"metadata.{key}"] = str(value) # get hidden params hidden_params = getattr(std_log, "hidden_params", None) or (std_log or {}).get(