Skip to content

回调与追踪 (Callbacks & Tracing)

在构建复杂的 LLM 应用时,了解“中间发生了什么”非常困难。Callbacks 系统允许我们挂钩到 LLM 应用的各个生命周期阶段。最重要的是,它与 LangSmith 完美集成。

LangSmith 追踪

LangSmith 是 LangChain 官方的生产级监控平台。开启它非常简单,只需设置环境变量。

配置环境

在终端中运行:

bash
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY="你的_langchain_api_key"
export LANGCHAIN_PROJECT="我的项目"

或者在 Python 代码中设置:

python
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "..."

一旦配置完成,你的所有 LangChain 调用(Chain, Agent, LLM)都会自动记录到 LangSmith 控制台。你可以看到:

  • 每个步骤的输入/输出
  • Token 消耗和成本
  • 延迟 (Latency)
  • 错误日志

自定义 Callback Handler

如果你不想使用 LangSmith,或者想将日志发送到其他地方(如本地日志文件、钉钉通知),可以编写自定义 Handler。

python
from langchain_core.callbacks import BaseCallbackHandler
from langchain_openai import ChatOpenAI

class MyCustomHandler(BaseCallbackHandler):
    def on_llm_start(self, serialized, prompts, **kwargs):
        print(f"正在调用 LLM... 输入: {prompts[0][:50]}...")

    def on_llm_end(self, response, **kwargs):
        print(f"LLM 调用结束。")

# 使用 Handler
handler = MyCustomHandler()
llm = ChatOpenAI(callbacks=[handler])

llm.invoke("讲个笑话")

常用回调方法

  • on_llm_start: LLM 开始运行时。
  • on_llm_new_token: 流式输出时,每生成一个 token 触发一次。
  • on_chain_start: 链开始运行时。
  • on_tool_start: 工具开始运行时。
  • on_error: 发生错误时。

🎉 恭喜!你已经完成了 LangChain 中文文档的所有核心教程。现在,去构建你自己的 AI 应用吧!

LangChain中文文档