From e9e72913ce973ee9b5ac7009b2bbbae6c8305e8c Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Mon, 26 May 2025 11:07:16 +0200 Subject: [PATCH 1/2] fix(langchain): anthropic usage parsing --- langfuse/callback/langchain.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/langfuse/callback/langchain.py b/langfuse/callback/langchain.py index 5b41fa1a0..ef6a63e2c 100644 --- a/langfuse/callback/langchain.py +++ b/langfuse/callback/langchain.py @@ -56,10 +56,12 @@ try: from langgraph.errors import GraphBubbleUp + CONTROL_FLOW_EXCEPTION_TYPES.add(GraphBubbleUp) except ImportError: pass + class LangchainCallbackHandler( LangchainBaseCallbackHandler, LangfuseBaseCallbackHandler ): @@ -1173,6 +1175,16 @@ def _parse_usage_model(usage: typing.Union[pydantic.BaseModel, dict]): "token_count" ] + usage_model = ( + { + k: v + for k, v in usage_model.items() + if v is not None and not isinstance(v, str) + } + if isinstance(usage_model, dict) + else usage_model + ) + return usage_model if usage_model else None From e6db94cbcb6d26c196cae60cbd5036daa3cbe7c5 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Mon, 26 May 2025 11:15:36 +0200 Subject: [PATCH 2/2] push --- langfuse/extract_model.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/langfuse/extract_model.py b/langfuse/extract_model.py index 192522846..5880e9624 100644 --- a/langfuse/extract_model.py +++ b/langfuse/extract_model.py @@ -106,7 +106,10 @@ def _extract_model_name( def _extract_model_from_repr_by_pattern( - id: str, serialized: Optional[Dict[str, Any]], pattern: str, default: Optional[str] = None + id: str, + serialized: Optional[Dict[str, Any]], + pattern: str, + default: Optional[str] = None, ): if serialized is None: return None