Callbacks 与调试:追踪执行过程
用 Callback 与 Verbose 模式观察链的每一步输入输出,为接入 LangSmith 打基础。
为什么需要可观测性
链一长,"中间到底发生了什么"就难以肉眼判断:提示词渲染成了什么样?模型实际收到了什么?检索到了哪些文档?
最快的方式:verbose
import langchain
langchain.debug = True # 等价于全局 verbose
result = chain.invoke({"topic": "RAG"})
langchain.debug = False
Callback Handler
LangChain 在链执行的每个节点(模型调用前后、工具执行前后)都会触发回调事件,你可以订阅它们:
from langchain_core.callbacks import BaseCallbackHandler
class MyHandler(BaseCallbackHandler):
def on_llm_start(self, serialized, prompts, **kwargs):
print("[LLM 开始] ", prompts)
def on_llm_end(self, response, **kwargs):
print("[LLM 结束] ", response.generations[0][0].text)
chain.invoke({"topic": "Agent"}, config={"callbacks": [MyHandler()]})
进阶:LangSmith
回调机制的"官方放大版"是 LangSmith 平台:可视化 trace、按会话查看每一步的输入输出与耗时、构建评测数据集。本站生态篇有专门课程。
📝 课后练习
quiz-1 langchain.debug = True 的作用是?