迁移到 astream_events(..., version="v2")
我们已在 v2 版本中添加了 astream_events API,该版本随 0.2.x 的发布而推出。你可以通过查看此 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')}
非对话模型(即常规的大语言模型)目前将始终与更详细的格式相关联。
on_retriever_end 的输出结果
on_retriever_end 输出将始终返回一个 Documents 的列表。
Before:
{
"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 代替。
传播名称
Runnable 的名称已更新,以提高一致性。
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进行流式处理时,生成了一个错误的on_chain_end事件,该事件对应于正在重试的失败可运行调用。此事件已在v2中移除。
此更改无需采取任何操作。