Skip to content

Commit f40fda7

Browse files
committed
fix: use DEFAULT level and preserve status_message for control-flow exceptions
Instead of setting level=None and clearing status_message for LangGraph control-flow exceptions, use level="DEFAULT" and keep the status message. This preserves visibility of interrupt/command events in traces without marking them as errors. Also applies the same improvement to on_chain_error for consistency across all four error handlers.
1 parent 8a9016d commit f40fda7

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

langfuse/langchain/CallbackHandler.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ def on_retriever_error(
256256
"on_retriever_error", run_id, parent_run_id, error=error
257257
)
258258
if any(isinstance(error, t) for t in CONTROL_FLOW_EXCEPTION_TYPES):
259-
level = None
259+
level = "DEFAULT"
260260
else:
261261
level = "ERROR"
262262

@@ -268,7 +268,7 @@ def on_retriever_error(
268268
Optional[Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"]],
269269
level,
270270
),
271-
status_message=str(error) if level else None,
271+
status_message=str(error),
272272
input=kwargs.get("inputs"),
273273
cost_details={"total": 0},
274274
).end()
@@ -589,7 +589,7 @@ def on_chain_error(
589589
try:
590590
self._log_debug_event("on_chain_error", run_id, parent_run_id, error=error)
591591
if any(isinstance(error, t) for t in CONTROL_FLOW_EXCEPTION_TYPES):
592-
level = None
592+
level = "DEFAULT"
593593
else:
594594
level = "ERROR"
595595

@@ -601,7 +601,7 @@ def on_chain_error(
601601
Optional[Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"]],
602602
level,
603603
),
604-
status_message=str(error) if level else None,
604+
status_message=str(error),
605605
input=kwargs.get("inputs"),
606606
cost_details={"total": 0},
607607
).end()
@@ -812,7 +812,7 @@ def on_tool_error(
812812
try:
813813
self._log_debug_event("on_tool_error", run_id, parent_run_id, error=error)
814814
if any(isinstance(error, t) for t in CONTROL_FLOW_EXCEPTION_TYPES):
815-
level = None
815+
level = "DEFAULT"
816816
else:
817817
level = "ERROR"
818818

@@ -824,7 +824,7 @@ def on_tool_error(
824824
Optional[Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"]],
825825
level,
826826
),
827-
status_message=str(error) if level else None,
827+
status_message=str(error),
828828
input=kwargs.get("inputs"),
829829
cost_details={"total": 0},
830830
).end()
@@ -1014,7 +1014,7 @@ def on_llm_error(
10141014
try:
10151015
self._log_debug_event("on_llm_error", run_id, parent_run_id, error=error)
10161016
if any(isinstance(error, t) for t in CONTROL_FLOW_EXCEPTION_TYPES):
1017-
level = None
1017+
level = "DEFAULT"
10181018
else:
10191019
level = "ERROR"
10201020

@@ -1026,7 +1026,7 @@ def on_llm_error(
10261026
Optional[Literal["DEBUG", "DEFAULT", "WARNING", "ERROR"]],
10271027
level,
10281028
),
1029-
status_message=str(error) if level else None,
1029+
status_message=str(error),
10301030
input=kwargs.get("inputs"),
10311031
cost_details={"total": 0},
10321032
).end()

0 commit comments

Comments
 (0)