# 打开AI开发的黑盒:如何在LangChain中传播回调函数?
## 引言
在AI开发中,回调函数是强大的工具,能帮助我们在特定事件发生时执行自定义逻辑。LangChain,作为一个模块化的AI开发框架,广泛使用回调机制来管理不同的操作。本文章将探讨如何在LangChain的构造函数中传播回调函数。
## 主要内容
### 1. 理解回调函数及其作用域
回调函数是程序在某个事件发生时自动调用的函数。在LangChain中,回调函数通常在构造函数中传递,但需要注意这种方式仅作用于当前对象实例,不会被子对象继承。这可能导致一些偏离预期的行为,因此在更复杂的场景中,推荐使用运行时传递回调。
### 2. 创建自定义回调处理程序
在LangChain中,我们可以通过继承`BaseCallbackHandler`来创建自定义的回调处理程序。以下是如何定义一个简单的`LoggingHandler`:
```python
from typing import Any, Dict, List
from langchain_anthropic import ChatAnthropic
from langchain_core.callbacks import BaseCallbackHandler
from langchain_core.messages import BaseMessage
from langchain_core.outputs import LLMResult
from langchain_core.prompts import ChatPromptTemplate
class LoggingHandler(BaseCallbackHandler):
def on_chat_model_start(
self, serialized: Dict[str, Any], messages: List[List[BaseMessage]], **kwargs
) -> None:
print("Chat model started")
def on_llm_end(self, response: LLMR