迁移到 astream_events(..., version="v2")
随着 `0.2.x` 版本的发布,我们新增了 astream_events API 的 `v2` 版本。你可以查看此 PR 获取更多详情。
`v2` 版本是对 `v1` 版本的重写,应该更高效,事件输出也更一致。API 的 `v1` 版本将被弃用,转而支持 `v2` 版本,并将在 `0.4.0` 版本中移除。
下面列出了 API `v1` 和 `v2` 版本之间的变更。
`on_chat_model_end` 的输出
在 `v1` 中,与 `on_chat_model_end` 关联的输出会根据聊天模型是作为根级可运行对象运行还是作为链的一部分运行而有所不同。
作为根级可运行对象时,输出为
"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')}
非聊天模型(即常规 LLM)目前将始终与更详细的格式关联。
`on_retriever_end` 的输出
`on_retriever_end` 的输出将始终返回 `Documents` 列表。
之前
{
"data": {
"output": [
Document(...),
Document(...),
...
]
}
}
已移除 `on_retriever_stream`
`on_retriever_stream` 事件是实现中的一个遗留产物,并已被移除。
与该事件相关的所有信息已在 `on_retriever_end` 事件中提供。
请改用 `on_retriever_end`。
已移除 `on_tool_stream`
`on_tool_stream` 事件是实现中的一个遗留产物,并已被移除。
与该事件相关的所有信息已在 `on_tool_end` 事件中提供。
请改用 `on_tool_end`。
名称传播
可运行对象的名称已更新,以保持更一致。
model = GenericFakeChatModel(messages=infinite_cycle).configurable_fields(
messages=ConfigurableField(
id="messages",
name="Messages",
description="Messages return by the LLM",
)
)
在 `v1` 中,事件名称是 `RunnableConfigurableFields`。
在 `v2` 中,事件名称是 `GenericFakeChatModel`。
如果您正在按事件名称进行筛选,请检查是否需要更新您的筛选器。
RunnableRetry
在流式传输的 LCEL 链中使用 RunnableRetry 时,在 `v1` 中会生成一个不正确的 `on_chain_end` 事件,该事件对应于正在重试的失败可运行对象调用。此事件已在 `v2` 中移除。
此变更无需任何操作。