迁移到 astream_events(..., version="v2")
我们在 0.2.x 版本中添加了 astream_events API 的 v2 版本。您可以在此 PR 中了解更多详情。
v2 版本是 v1 版本的一次重写,应该更高效,并且输出事件更一致。v1 版本 API 将被弃用,取而代之的是 v2 版本,并将在 0.4.0 版本中移除。
下面是 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": 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 中移除。
此更改无需采取任何操作。