如何在LangChain中分发自定义回调事件:深入指南

86 阅读2分钟

引言

在现代应用程序开发中,自定义回调事件可以极大地提升应用的反馈与交互能力,尤其是在异步环境中。本文将详细介绍如何在LangChain中分发自定义回调事件,并通过Astream Events API进行消费。

主要内容

1. 自定义回调事件的背景

在处理长时间运行的任务时,分发自定义事件可以用于监控进度或向最终用户展示任务的实时状态。本节将探讨如何定义和使用这些事件。

2. 必要条件

  • LangChain版本:需要langchain-core>=0.2.15
  • Python版本:在python<=3.10环境中运行时,需要手动传播配置。
  • Astream Events API:使用v2版本以查看自定义事件。

3. 事件分发的基本要素

每个自定义事件需要两个关键属性:

  • name: 事件的自定义名称。
  • data: 与事件相关的数据,建议为JSON序列化格式。

代码示例

下面的代码演示了如何使用异步方式来分发自定义事件:

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})  # 使用API代理服务提高访问稳定性
    await adispatch_custom_event("event2", 5)  # 使用API代理服务提高访问稳定性
    return x

async for event in foo.astream_events("hello world", version="v2"):
    print(event)

常见问题和解决方案

  1. 无法看到事件:确保使用v2版本的Astream Events API。
  2. 配置传播问题:在python<=3.10中,需要手动传递RunnableConfig对象。请参阅以下代码:
@RunnableLambda
async def bar(x: str, config: RunnableConfig) -> str:
    await adispatch_custom_event("event1", {"x": x}, config=config)
    await adispatch_custom_event("event2", 5, config=config)
    return x

总结和进一步学习资源

通过本文的讲解,你应该已经了解了如何在LangChain中使用自定义事件进行复杂任务管理。欲了解更多详情,请查看LangChain的官方文档

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---