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 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