跳到主要内容

回调

前提条件

LangChain 提供了一个回调系统,允许你hook到 LLM 应用的各个阶段。这对于日志记录、监控、流式传输和其他任务非常有用。

你可以使用 API 中随处可用的 callbacks 参数来订阅这些事件。此参数是处理程序对象列表,这些对象应实现下面更详细描述的一个或多个方法。

回调事件

事件事件触发器关联方法
聊天模型启动当聊天模型启动时handleChatModelStart
LLM 启动当 LLM 启动时handleLlmStart
LLM 新 token当 LLM 或聊天模型发出新 token 时handleLlmNewToken
LLM 结束当 LLM 或聊天模型结束时handleLlmEnd
LLM 错误当 LLM 或聊天模型出错时handleLlmError
链启动当链开始运行时handleChainStart
链结束当链结束时handleChainEnd
链错误当链出错时handleChainError
工具启动当工具开始运行时handleToolStart
工具结束当工具结束时handleToolEnd
工具错误当工具出错时handleToolError
检索器启动当检索器启动时handleRetrieverStart
检索器结束当检索器结束时handleRetrieverEnd
检索器错误当检索器出错时handleRetrieverError

回调处理程序

在运行时,LangChain 配置一个适当的回调管理器(例如,CallbackManager),当事件被触发时,该管理器将负责在每个“已注册”的回调处理程序上调用适当的方法。

传递回调

callbacks 属性在整个 API 中的大多数对象(模型、工具、代理等)的两个不同位置可用

  • 请求时回调:在请求时以及输入数据一起传递。在所有标准 Runnable 对象上可用。这些回调由它们定义的对象的所有子对象继承。 例如,await chain.invoke({ number: 25 }, { callbacks: [handler] })
  • 构造函数回调const chain = new TheNameOfSomeChain({ callbacks: [handler] })。这些回调作为参数传递给对象的构造函数。回调的作用域仅限于它们定义的对象,并且不会被对象的任何子对象继承。
危险

构造函数回调的作用域仅限于它们定义的对象。它们不会被对象的子对象继承。

如果你正在创建自定义链或 runnable,则需要记住将请求时回调传播到任何子对象。

有关如何使用回调的具体信息,请参阅此处的相关实践指南


此页对您有帮助吗?


您也可以留下详细的反馈 在 GitHub 上.