Skip to main content
Open on GitHub

回调函数

Prerequisites

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

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

回调事件

事件事件触发器关联方法
聊天模型开始当聊天模型开始时on_chat_model_start
LLM 开始当 LLM 启动时on_llm_start
LLM新令牌当LLM或聊天模型发出新令牌时on_llm_new_token
LLM 结束当 llm 或聊天模型结束时on_llm_end
LLM 错误当 llm 或聊天模型出错时on_llm_error
链开始当链开始运行时on_chain_start
链结束当链结束时on_chain_end
链错误当链发生错误时on_chain_error
工具启动当工具开始运行时on_tool_start
工具结束当工具结束时on_tool_end
工具错误当工具出错时on_tool_error
代理动作当代理执行一个动作时on_agent_action
代理结束当代理结束时on_agent_finish
检索器启动当检索器启动时on_retriever_start
检索器结束当检索器结束时on_retriever_end
检索器错误当检索器发生错误时on_retriever_error
文本当运行任意文本时on_text
重试当重试事件运行时on_retry

回调处理程序

回调处理程序可以是syncasync

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

传递回调函数

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

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

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

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

Async in Python<=3.10

任何 RunnableLambdaRunnableGeneratorTool,如果它调用其他可运行对象并且在 python<=3.10 中运行 async,则必须手动将回调传播到子对象。这是因为在这种情况下,LangChain 无法自动将回调传播到子对象。

这是您可能无法看到从自定义可运行对象或工具发出的事件的常见原因。

有关如何使用回调的具体信息,请参阅相关操作指南


这个页面有帮助吗?