feat(litellm_logging.py): log exception response headers to langfuse

This commit is contained in:
Krrish Dholakia 2024-08-01 18:01:03 -07:00
parent 48a773845b
commit 4b73b1e346
6 changed files with 19 additions and 8 deletions

View file

@ -5,6 +5,7 @@ import os
import traceback
from packaging.version import Version
from pydantic import BaseModel
import litellm
from litellm._logging import verbose_logger
@ -43,8 +44,8 @@ class LangFuseLogger:
self.langfuse_debug = os.getenv("LANGFUSE_DEBUG")
parameters = {
"public_key": self.public_key,
"secret_key": self.secret_key,
"public_key": "pk-lf-b3db7e8e-c2f6-4fc7-825c-a541a8fbe003",
"secret_key": "sk-lf-b11ef3a8-361c-4445-9652-12318b8596e4",
"host": self.langfuse_host,
"release": self.langfuse_release,
"debug": self.langfuse_debug,
@ -331,7 +332,7 @@ class LangFuseLogger:
metadata = copy.deepcopy(
metadata
) # Avoid modifying the original metadata
except:
except Exception:
new_metadata = {}
for key, value in metadata.items():
if (
@ -342,6 +343,8 @@ class LangFuseLogger:
or isinstance(value, float)
):
new_metadata[key] = copy.deepcopy(value)
elif isinstance(value, BaseModel):
new_metadata[key] = value.model_dump()
metadata = new_metadata
supports_tags = Version(langfuse.version.__version__) >= Version("2.6.3")

View file

@ -1516,6 +1516,13 @@ class Logging:
self.model_call_details["end_time"] = end_time
self.model_call_details.setdefault("original_response", None)
self.model_call_details["response_cost"] = 0
if hasattr(exception, "headers") and isinstance(exception.headers, dict):
self.model_call_details.setdefault("litellm_params", {})
metadata = (
self.model_call_details["litellm_params"].get("metadata", {}) or {}
)
metadata.update(exception.headers)
return start_time, end_time
def failure_handler(

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,8 @@
model_list:
- model_name: "*"
- model_name: "predibase-llama"
litellm_params:
model: "*"
model: "predibase/llama-3-8b-instruct"
request_timeout: 1
litellm_settings:
failure_callback: ["langfuse"]