diff --git a/litellm/integrations/langfuse.py b/litellm/integrations/langfuse.py index 1e957dfcf..5e1961b66 100644 --- a/litellm/integrations/langfuse.py +++ b/litellm/integrations/langfuse.py @@ -318,11 +318,11 @@ class LangFuseLogger: else: clean_metadata[key] = value - session_id = clean_metadata.pop("session_id", None) - trace_name = clean_metadata.pop("trace_name", None) - trace_id = clean_metadata.pop("trace_id", None) - existing_trace_id = clean_metadata.pop("existing_trace_id", None) - update_trace_keys = clean_metadata.pop("update_trace_keys", []) + session_id = clean_metadata.get("session_id", None) + trace_name = clean_metadata.get("trace_name", None) + trace_id = clean_metadata.get("trace_id", None) + existing_trace_id = clean_metadata.get("existing_trace_id", None) + update_trace_keys = clean_metadata.get("update_trace_keys", []) if trace_name is None and existing_trace_id is None: # just log `litellm-{call_type}` as the trace name @@ -342,6 +342,10 @@ class LangFuseLogger: if updated_trace_value is not None: trace_params[trace_param_key] = updated_trace_value + if "metadata" in update_trace_keys: + # log metadata in the trace + trace_params["metadata"] = clean_metadata + # Pop the trace specific keys that would have been popped if there were a new trace for key in list( filter(lambda key: key.startswith("trace_"), clean_metadata.keys()) @@ -363,6 +367,7 @@ class LangFuseLogger: "trace_version", clean_metadata.get("version", None) ), # If provided just version, it will applied to the trace as well, if applied a trace version it will take precedence "user_id": user_id, + "metadata": metadata, } for key in list( filter(lambda key: key.startswith("trace_"), clean_metadata.keys()) @@ -426,7 +431,6 @@ class LangFuseLogger: "url": url, "headers": clean_headers, } - trace = self.Langfuse.trace(**trace_params) generation_id = None