langchain-core 的回调管理器之上,因此为其中一个添加追踪即可覆盖另一个。
安装
failproofai-sdk[langchain]。
支持范围:langchain-core 1.4.7 至 2.0,langgraph 1.2 至 2.0。超出该范围时,适配器仍可安装,但会发出一次警告。
添加追踪
instrument() 通过 langchain_core.tracers.context.register_configure_hook 注册一个追踪器。LangChain 会将其注入到所构建的每个回调管理器中,因此图、工具和模型都能被自动捕获,无需修改任何调用点——包括你没有编写的库内部的调用。
记录内容
节点成为 hook,而非嵌套 agent。
agent_id 是所有仪表板视图中的主要维度——将 retrieve、grade_documents 和 should_continue 提升为 agent 会使其淹没其中,并以恰好最先运行的节点来标记会话。
Hook span 的渲染方式相同,仍然提供逐节点的延迟视图。
节点可以随意命名。 节点的运行通过其形态来识别——携带 LangGraph 自身步骤标签的非叶子运行——而非通过名称。
以节点运行的内容命名节点,过去会导致该内容的事件消失,现在不会了。
流式传输
.stream() 和 .astream() 不会产生逐 token 的事件,它们会折叠进关闭时的 model_response 中:
流式响应中的 Token 计数
这是一个独立的问题,容易被忽略:OpenAI 只在被明确要求时才在流式响应中发送用量信息。model_response 中将不包含 token 计数。
示例
为 span 命名
默认情况下,根 span 使用图本身的名称。可以包裹一层来使用自定义标签:parent_id 的子 span:
agent_id 低基数。使用角色或节点名称,不要使用 UUID 或每次运行时生成的字符串。
控制会话
会话 id 按以下顺序解析,第一个匹配项生效:instrument("langchain", session_id=...)config={"metadata": {"failproofai_sdk_session_id": ...}}- 外层的
failproofai_sdk.session()作用域 metadata["session_id"]、metadata["conversation_id"]或metadata["thread_id"]- 根运行 id
选项
capture_content=False。结构、时序、token 计数、工具名称和结果仍会被记录;消息正文不会被记录。
include_chains 仅适用于嵌套运行。在顶层调用的 runnable 是会话的根节点,因此它会成为 agent span 而非 hook 对,在此处命名它没有效果。
人工介入循环
interrupt() 产生四个事件,两对都不冗余:
human_wait 到 human_input 携带提示和答案(在 capture_content=False 下均会被去除,连同检索文档来源一并去除——文档数量仍会保留)。agent_pause 到 agent_resume 是唯一能记录暂停时间的一对,如果缺少它,十分钟的人工等待会被计为活跃 agent 时间。根 span 在间隔期间保持打开状态,将两次调用保持在同一个会话中。
常见问题
抛出异常的工具会中止整个图
抛出异常的工具会中止整个图
create_react_agent 会传播该异常。若要让模型看到失败并继续执行,请显式构建工具节点:tool_result 形式被记录。这里只决定运行是否能在失败后继续。追踪中出现了以模型类命名的 agent
追踪中出现了以模型类命名的 agent
在任何图之外直接调用
llm.invoke() 时没有父运行,因此它会打开一个根 span 并在其中发出模型事件对。仪表板会将叶子节点挂到一个已打开的 agent 下,所以这个 span 是有意为之的。可以为其命名:每个事件出现了两次
每个事件出现了两次
你在
config={"callbacks": [...]} 中传入了 Failproof 处理器,同时又调用了 instrument()。请移除前者。configure hook 已经覆盖了进程中的每个回调管理器。人工审批显示为错误
人工审批显示为错误
并非如此。LangGraph 通过与真实异常相同的路径抛出
GraphInterrupt,因此每次暂停都会作为错误回调到达追踪器。任何 GraphBubbleUp 子类都被视为控制流,因此审批操作不会标记为红色错误。没有任何内容被记录
没有任何内容被记录
按以下顺序检查:
instrument() 在图执行前已运行;调用周围有 with failproofai_sdk.session():;是否设置了 FAILPROOFAI_SDK_STRICT=1,该设置会使降级的 hook 抛出异常而非被吞掉。下一步
工作原理
事件对、id、会话生命周期和数据投递。
读取追踪
跟踪刚捕获的会话中的因果链路。
其他框架
CrewAI、LlamaIndex、Pydantic AI 以及自定义 agent。

