bug(python-sdk): Langchain base tool handled errors are considered like successful outputs

用户在使用 Langfuse Python SDK 集成 LangChain 回调管理器时,创建了一个继承 BaseTool 并设置了 handle_tool_error = True 的 LangChain 工具。当工具抛出 ToolException 时,LangChain 正确调用了 on_t

bug(python-sdk): Langchain base tool handled errors are considered like successful outputs

bug(python-sdk): Langchain base tool handled errors are considered like successful outputs

快速结论:当 LangChain 工具将 handle_tool_error 设置为 true 且工具抛出 ToolException 时,Langfuse 会将工具调用标记为成功(而非失败)。优先排查你的 Langfuse SDK 版本是否包含针对 on_tool_endToolMessage.status 的修复。

问题场景

用户在使用 Langfuse Python SDK 集成 LangChain 回调管理器时,创建了一个继承 BaseTool 并设置了 handle_tool_error = True 的 LangChain 工具。当工具抛出 ToolException 时,LangChain 正确调用了 on_tool_end(而非 on_tool_error),但 Langfuse 的追踪记录中该工具调用被标记为成功,未能反映实际发生的错误。

报错原文

# 行为表现而非传统报错:
# Langfuse 追踪中工具调用的 Observation Level 显示为 "DEFAULT"(成功)
# 期望应为 "ERROR"(失败)

# 核心逻辑缺陷位置:on_tool_end 回调方法
# 未检查 ToolMessage.status 属性
# 导致即使 status="error" 也被视为成功输出

原因分析

LangChain 在 handle_tool_error=True 的情况下,工具抛出 ToolException 后不会调用 on_tool_error,而是调用 on_tool_end,并将返回的 ToolMessagestatus 字段设置为 "error"。Langfuse 的 LangChain 回调处理器中的 on_tool_end 方法没有检查该 status,而是将所有结束的工具调用直接标记为成功。

环境排查

  • Langfuse Python SDK 版本:确认是否 < 待发布或修补版本(Issue 提及 v4.0.0 受影响)
  • LangChain 版本:确认是否使用支持 handle_tool_errorToolMessage.status 的版本
  • Langfuse 版本:确认 self-hosted 部署版本(Issue 中为 v3.155)
  • Python 版本:建议使用 3.9+

解决步骤

  1. 确认你的 Langfuse Python SDK 版本是否包含该修复。Issue 中已提交 PR(langfuse-python#1718),检查当前 SDK 是否已合并该 PR。
  2. 如果尚未包含修复,可优先尝试on_tool_end 方法中手动检查 ToolMessagestatus 属性:如果 status == "error",将对应的 Langfuse 观察级别设置为 ERROR
  3. 也可以等待官方 SDK 更新后,升级到包含该修复的版本。
  4. 升级后,针对使用了 handle_tool_error=True 的 BaseTool 运行回归测试,确保工具错误能被正确标记为失败。

验证方法

创建一个简单的 LangChain 工具,设置 handle_tool_error=True,使其抛出 ToolException,并绑定 Langfuse 回调管理器。触发工具调用后,在 Langfuse 追踪中查看该工具调用的 Observation Level。修复前显示为成功(绿色图标),修复后应显示为错误(红色图标),且工具调用的输出内容包含错误信息。

参考来源

langfuse/langfuse #12867

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 9599

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注