框架与工具链2012 字

LangChain自定义Callback组件

·全库 346 / 611

《LangChain自定义Callback组件》共 0.2 万字,通篇围绕 LangChain、Agent、prompt、日志 展开,归在「框架与工具链」这一层。

覆盖LangChainAgentprompt日志监控

适合要选技术栈、不想把别人踩过的坑重踩一遍的人

目录骨架(6 节)
  1. 回调概念
  2. 回调事件(Callback Events)
  3. 回调处理程序
  4. 传递回调函数
  5. 在运行时传递回调函数
  6. 自定义 callback handlers自定义 Chat model
目录 · 4 节

示例代码

注:将ppt后缀名改为zip后解压

python版本:3.12.4

回调概念

LangChain提供了一个回调系统,允许您连接到LLM应用程序的各个阶段。这对于日志记录、监控、流式处理和其他任务非常有用。 您可以通过使用API中的callbacks参数订阅这些事件。这个参数是处理程序对象的列表,这些处理程序对象应该实现下面更详细描述的一个或多个方法。

​

回调事件(Callback Events)

EventEvent TriggerAssociated Method
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

回调处理程序

CallbackHandlers是实现了CallbackHandler接口的对象,该接口对应于可以订阅的每个事件都有一个方法。 当事件触发时,CallbackManager将在每个处理程序上调用适当的方法。

参考:https://api.python.langchain.com/en/latest/callbacks/langchain_core.callbacks.base.BaseCallbackHandler.html#langchain-core-callbacks-base-basecallbackhandler

#示例:callback_run.py
class BaseCallbackHandler:
    """可以用来处理langchain回调的基本回调处理程序。"""
    def on_llm_start(
        self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any
    ) -> Any:
        """LLM开始运行时运行。"""
    def on_chat_model_start(
        self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs: Any
    ) -> Any:
        """聊天模型开始运行时运行。"""
    # 其他方法省略...

传递回调函数

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

  • 构造函数回调:在构造函数中定义,例如 ChatOpenAI(callbacks=[handler], tags=['a-tag'])。在这种情况下,回调函数将用于该对象上的所有调用,并且仅限于该对象。 例如,如果你使用构造函数回调初始化了一个聊天模型,然后在链式调用中使用它,那么回调函数只会在对该模型的调用中被调用。
  • 请求回调:传递给用于发出请求的 invoke 方法。在这种情况下,回调函数仅用于该特定请求,以及它包含的所有子请求(例如,调用触发对模型的调用的序列的调用,该模型使用在 invoke() 方法中传递的相同处理程序)。 在 invoke() 方法中,通过 config 参数传递回调函数。

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求