回调与追踪 (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中文文档