Skip to main content

回调函数

预备知识

LangChain 提供了一个回调系统,允许你介入你的 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),它负责在事件触发时调用每个“已注册”回调处理器的相应方法。

传递回调

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

  • 请求时回调:与输入数据一起在请求时传递。所有标准的 Runnable 对象都支持此功能。这些回调会被定义在其上的对象的所有子对象继承。例如:await chain.invoke({ number: 25 }, { callbacks: [handler] })
  • 构造时回调const chain = new TheNameOfSomeChain({ callbacks: [handler] })。这些回调作为参数传递给对象的构造函数。这些回调仅作用于定义它们的对象本身,不会传递给该对象的任何子对象。
danger

构造时回调仅作用于定义它们的对象本身。不会传递给该对象的子对象。

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

关于如何使用回调的具体说明,请参阅此处的相关操作指南


Was this page helpful?


You can also leave detailed feedback on GitHub.