diff --git a/litellm/integrations/langfuse.py b/litellm/integrations/langfuse.py index 6e26bb023..cef5900c4 100644 --- a/litellm/integrations/langfuse.py +++ b/litellm/integrations/langfuse.py @@ -133,6 +133,7 @@ class LangFuseLogger: self._log_langfuse_v2( user_id, metadata, + litellm_params, output, start_time, end_time, @@ -224,6 +225,7 @@ class LangFuseLogger: self, user_id, metadata, + litellm_params, output, start_time, end_time, @@ -298,13 +300,44 @@ class LangFuseLogger: else: clean_metadata[key] = value + api_base = litellm_params.get("api_base", None) + if api_base: + clean_metadata["api_base"] = api_base + + vertex_location = kwargs.get("vertex_location", None) + if vertex_location: + clean_metadata["vertex_location"] = vertex_location + + aws_region_name = kwargs.get("aws_region_name", None) + if aws_region_name: + clean_metadata["aws_region_name"] = aws_region_name + if supports_tags: if "cache_hit" in kwargs: if kwargs["cache_hit"] is None: kwargs["cache_hit"] = False tags.append(f"cache_hit:{kwargs['cache_hit']}") + clean_metadata["cache_hit"] = kwargs["cache_hit"] trace_params.update({"tags": tags}) + proxy_server_request = litellm_params.get("proxy_server_request", None) + if proxy_server_request: + method = proxy_server_request.get("method", None) + url = proxy_server_request.get("url", None) + headers = proxy_server_request.get("headers", None) + clean_headers = {} + if headers: + for key, value in headers.items(): + # these headers can leak our API keys and/or JWT tokens + if key.lower() not in ["authorization", "cookie", "referer"]: + clean_headers[key] = value + + clean_metadata["request"] = { + "method": method, + "url": url, + "headers": clean_headers, + } + print_verbose(f"trace_params: {trace_params}") trace = self.Langfuse.trace(**trace_params)