[轻松掌握自定义回调事件的分发技巧,提升异步编程效果]

68 阅读2分钟

引言

在现代编程中,特别是处理复杂或异步任务时,自定义回调事件成为了一种有效的工具。本文将介绍如何在Runnable中分发自定义回调事件,并通过Astream Events API进行监控。这不仅有助于进度跟踪,还能为应用的终端用户提供实时反馈。

主要内容

自定义回调事件的基础

自定义事件包含两个关键属性:

  • name: 事件的用户定义名称
  • data: 与事件相关的数据,建议使用JSON可序列化格式

要分发自定义事件,确保你使用的是langchain-core>=0.2.15版本。

兼容性注意事项

  • 在Python <= 3.10 中,配置不会自动传播到子Runnable,需手动传递RunnableConfig
  • 在Python >= 3.11中,配置会自动传播,但为保兼容性,手动传递仍是好习惯。

代码示例

下面的示例展示了如何在异步环境中分发自定义回调事件:

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)
    return x

async for event in foo.astream_events("hello world", version="v2"):  # 确保使用v2版本
    print(event)

常见问题和解决方案

  1. 无法看到自定义事件: 确保你使用的是v2版本的astream_events。另外,在Python <= 3.10中,需手动传递RunnableConfig

  2. 异步代码中的配置传播: 使用手动传播来确保所有版本兼容性。

总结和进一步学习资源

分发自定义回调事件可以显著提升应用程序的透明度和用户体验。建议继续阅读官方文档以了解更多深入细节。

参考资料

  • LangChain Documentation
  • Python Official Documentation

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

---END---