核心概念 中级

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 的作用是?