langchain_core.runnables.schema.BaseStreamEvent

class langchain_core.runnables.schema.BaseStreamEvent[source]

流事件。

由 astream_events 方法生成的流事件的结构。

示例

from langchain_core.runnables import RunnableLambda

async def reverse(s: str) -> str:
    return s[::-1]

chain = RunnableLambda(func=reverse)

events = [event async for event in chain.astream_events("hello")]

# will produce the following events
# (where some fields have been omitted for brevity):
[
    {
        "data": {"input": "hello"},
        "event": "on_chain_start",
        "metadata": {},
        "name": "reverse",
        "tags": [],
    },
    {
        "data": {"chunk": "olleh"},
        "event": "on_chain_stream",
        "metadata": {},
        "name": "reverse",
        "tags": [],
    },
    {
        "data": {"output": "olleh"},
        "event": "on_chain_end",
        "metadata": {},
        "name": "reverse",
        "tags": [],
    },
]
event: str

on_[runnable_type]_(start|stream|end).

可执行的类型包括以下几种

  • llm - 用于非聊天模型

  • chat_model - 用于聊天模型

  • prompt – 例如,ChatPromptTemplate

  • tool – 通过@tool装饰器定义的工具或从Tool/BaseTool继承的工具

  • chain - 大多数可执行的类型为此类型

此外,事件被分类为以下几种之一

  • start - 当可执行开始时

  • stream - 当可执行正在传输数据时

  • **end* - 当可执行结束时

start, stream和end与稍微不同的数据负载相关联。

请参阅《EventData》文档以获取更多详细信息。

类型

事件名称的格式为

run_id: str

随机生成的ID,用于跟踪给定可执行的执行情况。

在父可执行的执行过程中被调用的每个子可执行都会分配一个唯一的ID。

tags: NotRequired[List[str]]

与产生此事件的可执行关联的标签。

标签总是从父可执行继承。

标签可以通过使用.with_config({"tags": ["hello"]})绑定到可执行或通过在运行时使用.astream_events(…, {"tags": ["hello"]})传递。

metadata: NotRequired[Dict[str, Any]]

与产生此事件的可执行关联的元数据。

元数据可以通过以下方式绑定到可执行

.with_config({"metadata": {"foo": "bar"}})

或者通过在运行时使用

.astream_events(…, {"metadata": {"foo": "bar"}}).

parent_ids: Sequence[str]

与此事件关联的父ID列表。

根事件将具有空列表。

例如,如果可执行A调用可执行B,则可执行B生成的事件将在parent_ids字段中包含可执行A的ID。

parent IDs的顺序是从根父级到直接父级。

仅从astream events API的v2版本开始支持。v1将返回空列表。