包含该类的模块路径,例如 ["langchain", "llms"]。通常应与该类导出的入口点相同。
Optional
nameProtected
funcProtected
lc_构造函数参数的别名映射。键是属性名称,例如 "foo"。值是将在序列化中替换键的别名。这用于例如使参数名称与 Python 匹配。
要与构造函数参数合并的附加属性的映射。键是属性名称,例如 "foo"。值是属性值,它们将被序列化。这些属性需要被构造函数接受为参数。
模块的最终序列化标识符。
将从序列化中省略的秘密映射。键是构造函数参数中秘密的路径,例如 "foo.bar.baz"。值是秘密 ID,将在反序列化时使用。
应序列化的键的手动列表。如果未被覆盖,所有传入构造函数的字段都将被序列化。
将新字段分配给此 runnable 的字典输出。返回一个新的 runnable。
batch 的默认实现,它调用 invoke N 次。如果子类可以更有效地进行批处理,则应覆盖此方法。
每次批处理调用的输入数组。
Optional
options应用于每个批处理调用的单个选项对象,或每个调用的数组。
Optional
batchOptions: RunnableBatchOptions & { returnExceptions?: false }是否返回错误而不是在第一个错误时抛出异常
Optional
returnExceptions?: false是否返回错误而不是在第一个错误时抛出异常
一个 RunOutput 数组,或者如果设置了 batchOptions.returnExceptions,则为 RunOutput 和错误的混合数组
batch 的默认实现,它调用 invoke N 次。如果子类可以更有效地进行批处理,则应覆盖此方法。
每次批处理调用的输入数组。
Optional
options应用于每个批处理调用的单个选项对象,或每个调用的数组。
Optional
batchOptions: RunnableBatchOptions & { returnExceptions: true }是否返回错误而不是在第一个错误时抛出异常
是否返回错误而不是在第一个错误时抛出异常
一个 RunOutput 数组,或者如果设置了 batchOptions.returnExceptions,则为 RunOutput 和错误的混合数组
batch 的默认实现,它调用 invoke N 次。如果子类可以更有效地进行批处理,则应覆盖此方法。
每次批处理调用的输入数组。
Optional
options应用于每个批处理调用的单个选项对象,或每个调用的数组。
Optional
batchOptions: RunnableBatchOptions是否返回错误而不是在第一个错误时抛出异常
一个 RunOutput 数组,或者如果设置了 batchOptions.returnExceptions,则为 RunOutput 和错误的混合数组
Optional
_: RunnableConfig<Record<string, any>>Optional
suffix: string从该 runnable 的字典输出中选取键。返回一个新的 runnable。
创建一个新的 runnable 序列,该序列按顺序运行每个独立的 runnable,将一个 runnable 的输出导入另一个 runnable 或类似 runnable 的对象。
一个 runnable、函数或其值是函数或 runnable 的对象。
一个新的 runnable 序列。
生成由 runnable 内部步骤发出的事件流。
用于创建一个 StreamEvents 迭代器,该迭代器提供有关 runnable 进度的实时信息,包括来自中间结果的 StreamEvents。
StreamEvent 是一个具有以下模式的字典
event
: string - 事件名称格式为:on_[runnable_type]_(start|stream|end)。name
: string - 生成事件的 runnable 名称。run_id
: string - 与发出事件的 runnable 的给定执行关联的随机生成的 ID。作为父 runnable 执行一部分被调用的子 runnable 将被分配其自己的唯一 ID。tags
: string[] - 生成事件的 runnable 的标签。metadata
: Record<string, any> - 生成事件的 runnable 的元数据。data
: Record<string, any>下表说明了各种链可能发出的一些事件。为简洁起见,元数据字段已从表中省略。链定义已包含在表后。
注意 此参考表适用于 V2 版模式。
+----------------------+-----------------------------+------------------------------------------+
| event | input | output/chunk |
+======================+=============================+==========================================+
| on_chat_model_start | {"messages": BaseMessage[]} | |
+----------------------+-----------------------------+------------------------------------------+
| on_chat_model_stream | | AIMessageChunk("hello") |
+----------------------+-----------------------------+------------------------------------------+
| on_chat_model_end | {"messages": BaseMessage[]} | AIMessageChunk("hello world") |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_start | {'input': 'hello'} | |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_stream | | 'Hello' |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_end | 'Hello human!' | |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_start | | |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_stream | | "hello world!" |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_end | [Document(...)] | "hello world!, goodbye world!" |
+----------------------+-----------------------------+------------------------------------------+
| on_tool_start | {"x": 1, "y": "2"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_tool_end | | {"x": 1, "y": "2"} |
+----------------------+-----------------------------+------------------------------------------+
| on_retriever_start | {"query": "hello"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_retriever_end | {"query": "hello"} | [Document(...), ..] |
+----------------------+-----------------------------+------------------------------------------+
| on_prompt_start | {"question": "hello"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_prompt_end | {"question": "hello"} | ChatPromptValue(messages: BaseMessage[]) |
+----------------------+-----------------------------+------------------------------------------+
“on_chain_*” 事件是对于不属于上述任何类别的 Runnables 的默认事件。
除了上述标准事件之外,用户还可以分派自定义事件。
自定义事件将仅在 API 的 v2
版本中显示!
自定义事件具有以下格式
+-----------+------+------------------------------------------------------------+
| Attribute | Type | Description |
+===========+======+============================================================+
| name | str | A user defined name for the event. |
+-----------+------+------------------------------------------------------------+
| data | Any | The data associated with the event. This can be anything. |
+-----------+------+------------------------------------------------------------+
以下是一个示例
import { RunnableLambda } from "@langchain/core/runnables";
import { dispatchCustomEvent } from "@langchain/core/callbacks/dispatch";
// Use this import for web environments that don't support "async_hooks"
// and manually pass config to child runs.
// import { dispatchCustomEvent } from "@langchain/core/callbacks/dispatch/web";
const slowThing = RunnableLambda.from(async (someInput: string) => {
// Placeholder for some slow operation
await new Promise((resolve) => setTimeout(resolve, 100));
await dispatchCustomEvent("progress_event", {
message: "Finished step 1 of 2",
});
await new Promise((resolve) => setTimeout(resolve, 100));
return "Done";
});
const eventStream = await slowThing.streamEvents("hello world", {
version: "v2",
});
for await (const event of eventStream) {
if (event.event === "on_custom_event") {
console.log(event);
}
}
Optional
streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">生成由 runnable 内部步骤发出的事件流。
用于创建一个 StreamEvents 迭代器,该迭代器提供有关 runnable 进度的实时信息,包括来自中间结果的 StreamEvents。
StreamEvent 是一个具有以下模式的字典
event
: string - 事件名称格式为:on_[runnable_type]_(start|stream|end)。name
: string - 生成事件的 runnable 名称。run_id
: string - 与发出事件的 runnable 的给定执行关联的随机生成的 ID。作为父 runnable 执行一部分被调用的子 runnable 将被分配其自己的唯一 ID。tags
: string[] - 生成事件的 runnable 的标签。metadata
: Record<string, any> - 生成事件的 runnable 的元数据。data
: Record<string, any>下表说明了各种链可能发出的一些事件。为简洁起见,元数据字段已从表中省略。链定义已包含在表后。
注意 此参考表适用于 V2 版模式。
+----------------------+-----------------------------+------------------------------------------+
| event | input | output/chunk |
+======================+=============================+==========================================+
| on_chat_model_start | {"messages": BaseMessage[]} | |
+----------------------+-----------------------------+------------------------------------------+
| on_chat_model_stream | | AIMessageChunk("hello") |
+----------------------+-----------------------------+------------------------------------------+
| on_chat_model_end | {"messages": BaseMessage[]} | AIMessageChunk("hello world") |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_start | {'input': 'hello'} | |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_stream | | 'Hello' |
+----------------------+-----------------------------+------------------------------------------+
| on_llm_end | 'Hello human!' | |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_start | | |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_stream | | "hello world!" |
+----------------------+-----------------------------+------------------------------------------+
| on_chain_end | [Document(...)] | "hello world!, goodbye world!" |
+----------------------+-----------------------------+------------------------------------------+
| on_tool_start | {"x": 1, "y": "2"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_tool_end | | {"x": 1, "y": "2"} |
+----------------------+-----------------------------+------------------------------------------+
| on_retriever_start | {"query": "hello"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_retriever_end | {"query": "hello"} | [Document(...), ..] |
+----------------------+-----------------------------+------------------------------------------+
| on_prompt_start | {"question": "hello"} | |
+----------------------+-----------------------------+------------------------------------------+
| on_prompt_end | {"question": "hello"} | ChatPromptValue(messages: BaseMessage[]) |
+----------------------+-----------------------------+------------------------------------------+
“on_chain_*” 事件是对于不属于上述任何类别的 Runnables 的默认事件。
除了上述标准事件之外,用户还可以分派自定义事件。
自定义事件将仅在 API 的 v2
版本中显示!
自定义事件具有以下格式
+-----------+------+------------------------------------------------------------+
| Attribute | Type | Description |
+===========+======+============================================================+
| name | str | A user defined name for the event. |
+-----------+------+------------------------------------------------------------+
| data | Any | The data associated with the event. This can be anything. |
+-----------+------+------------------------------------------------------------+
以下是一个示例
import { RunnableLambda } from "@langchain/core/runnables";
import { dispatchCustomEvent } from "@langchain/core/callbacks/dispatch";
// Use this import for web environments that don't support "async_hooks"
// and manually pass config to child runs.
// import { dispatchCustomEvent } from "@langchain/core/callbacks/dispatch/web";
const slowThing = RunnableLambda.from(async (someInput: string) => {
// Placeholder for some slow operation
await new Promise((resolve) => setTimeout(resolve, 100));
await dispatchCustomEvent("progress_event", {
message: "Finished step 1 of 2",
});
await new Promise((resolve) => setTimeout(resolve, 100));
return "Done";
});
const eventStream = await slowThing.streamEvents("hello world", {
version: "v2",
});
for await (const event of eventStream) {
if (event.event === "on_custom_event") {
console.log(event);
}
}
Optional
streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">从 runnable 流式传输所有输出,如报告给回调系统。这包括 LLM、Retrievers、Tools 等的所有内部运行。输出作为 Log 对象流式传输,其中包括一个 jsonpatch 操作列表,描述运行状态在每个步骤中如何变化,以及运行的最终状态。jsonpatch 操作可以用于构造状态。
Optional
options: Partial<RunnableConfig<Record<string, any>>>Optional
streamOptions: Omit<LogStreamCallbackHandlerInput, "autoClose">从当前 runnable 创建一个新的 runnable,如果初始调用失败,它将尝试调用其他传入的备用 runnable。
一个新的 RunnableWithFallbacks。
将生命周期监听器绑定到 Runnable,返回一个新的 Runnable。Run 对象包含有关运行的信息,包括其 ID、类型、输入、输出、错误、startTime、endTime 以及添加到运行中的任何标签或元数据。
包含回调函数的对象。
可选
onEnd?: (run: Run, config?: RunnableConfig<Record<string, any>>) => void | Promise<void>在 runnable 运行结束后调用,传入 Run 对象。
可选
onError?: (run: Run, config?: RunnableConfig<Record<string, any>>) => void | Promise<void>如果 runnable 抛出错误,则调用此函数,传入 Run 对象。
可选
onStart?: (run: Run, config?: RunnableConfig<Record<string, any>>) => void | Promise<void>在 runnable 开始运行前调用,传入 Run 对象。
静态
from静态
is静态
lc_可序列化对象的名称。重写此方法以提供别名或在最小化环境中保留序列化模块名称。
作为静态方法实现,以支持加载逻辑。
RunnableTraceable 是一个封装了可追踪函数的 Runnable。这允许将 Langsmith 追踪的函数添加到 LangChain 序列中。