引言
在现代编程中,特别是处理复杂或异步任务时,自定义回调事件成为了一种有效的工具。本文将介绍如何在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)
常见问题和解决方案
-
无法看到自定义事件: 确保你使用的是
v2版本的astream_events。另外,在Python <= 3.10中,需手动传递RunnableConfig。 -
异步代码中的配置传播: 使用手动传播来确保所有版本兼容性。
总结和进一步学习资源
分发自定义回调事件可以显著提升应用程序的透明度和用户体验。建议继续阅读官方文档以了解更多深入细节。
参考资料
- LangChain Documentation
- Python Official Documentation
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---