Skip to main content
在 GitHub 上打开

回调

先决条件

LangChain 提供了一个回调系统,允许您挂接到 LLM 应用程序的各个阶段。这对于日志记录、监控、流式处理和其他任务非常有用。

您可以使用callbacks参数在整个 API 中可用。此参数是处理程序对象的列表,这些对象应更详细地实现下面描述的一个或多个方法。

回调事件

事件事件触发器关联方法
Chat model startWhen a chat model startson_chat_model_start
LLM startWhen a llm startson_llm_start
LLM new tokenWhen an llm OR chat model emits a new tokenon_llm_new_token
LLM endsWhen an llm OR chat model endson_llm_end
LLM errorsWhen an llm OR chat model errorson_llm_error
Chain startWhen a chain starts runningon_chain_start
Chain endWhen a chain endson_chain_end
Chain errorWhen a chain errorson_chain_error
Tool startWhen a tool starts runningon_tool_start
Tool endWhen a tool endson_tool_end
Tool errorWhen a tool errorson_tool_error
Agent actionWhen an agent takes an actionon_agent_action
Agent finishWhen an agent endson_agent_finish
Retriever startWhen a retriever startson_retriever_start
Retriever endWhen a retriever endson_retriever_end
Retriever errorWhen a retriever errorson_retriever_error
TextWhen arbitrary text is runon_text
RetryWhen a retry event is runon_retry

回调处理程序

回调处理程序可以是syncasync:

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

传递回调

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

  • 请求时间回调:在请求时与输入数据一起传递。 适用于所有标准Runnable对象。这些回调由所有子项继承 定义它们的对象。例如chain.invoke({"number": 25}, {"callbacks": [handler]}).
  • 构造函数回调chain = TheNameOfSomeChain(callbacks=[handler]).这些回调 作为参数传递给对象的构造函数。回调的范围是 仅对定义它们的对象,并且不被对象的任何子对象继承。
警告

构造函数回调的范围仅限于定义它们的对象。它们不会由子代继承 的对象。

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

Python 中的异步<=3.10

任何RunnableLambda一个RunnableGeneratorTool这会调用其他 Runnables 并且正在运行async在 python<=3.10 中,必须将回调传播到 child 对象。这是因为 LangChain 无法自动传播 对子对象的回调。

这是您可能无法看到从自定义发出的事件的常见原因 Runnables 或 tools。

有关如何使用回传的详细信息,请参阅此处的相关操作指南