包含该类的模块的路径,例如 ["langchain", "llms"]。通常应与导出该类的入口点相同。
Optional
nameProtected
funcProtected
lc_构造函数参数别名映射。键是属性名称,例如 "foo"。值是将替换序列化中键的别名。这用于例如使参数名称与 Python 匹配。
要与构造函数参数合并的其他属性的映射。键是属性名称,例如 "foo"。值是将序列化的属性值。这些属性需要被构造函数作为参数接受。
模块的最终序列化标识符。
密钥映射,将从序列化中省略。键是构造函数参数中密钥的路径,例如 "foo.bar.baz"。值是密钥 ID,将在反序列化时使用。
应序列化的键的手动列表。如果未覆盖,则将序列化传递给构造函数的所有字段。
为此 runnable 的字典输出分配新字段。返回一个新的 runnable。
批处理的默认实现,它调用 invoke N 次。如果子类可以更有效地进行批处理,则应覆盖此方法。
每个批处理调用的输入数组。
Optional
options应用于每个批处理调用的单个调用选项对象或每个调用的数组。
Optional
batchOptions: RunnableBatchOptions & { returnExceptions?: false }是否返回错误而不是在第一个错误时抛出异常
Optional
returnExceptions?: false是否返回错误而不是在第一个错误时抛出异常
RunOutput 数组,或者如果设置了 batchOptions.returnExceptions,则为混合的 RunOutput 和错误
批处理的默认实现,它调用 invoke N 次。如果子类可以更有效地进行批处理,则应覆盖此方法。
每个批处理调用的输入数组。
Optional
options应用于每个批处理调用的单个调用选项对象或每个调用的数组。
Optional
batchOptions: RunnableBatchOptions & { returnExceptions: true }是否返回错误而不是在第一个错误时抛出异常
是否返回错误而不是在第一个错误时抛出异常
RunOutput 数组,或者如果设置了 batchOptions.returnExceptions,则为混合的 RunOutput 和错误
批处理的默认实现,它调用 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、函数或对象,其值是函数或 runnables。
一个新的 runnable 序列。
生成由 runnable 的内部步骤发出的事件流。
用于创建一个迭代器,遍历 StreamEvents,这些 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。
除了上面的标准事件外,用户还可以调度自定义事件。
自定义事件将仅在 v2
版本的 API 中显示!
自定义事件具有以下格式
+-----------+------+------------------------------------------------------------+
| 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,这些 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。
除了上面的标准事件外,用户还可以调度自定义事件。
自定义事件将仅在 v2
版本的 API 中显示!
自定义事件具有以下格式
+-----------+------+------------------------------------------------------------+
| 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、Retriever、Tool 等的所有内部运行。输出以 Log 对象的形式流式传输,其中包括 jsonpatch 操作列表,这些操作描述了每个步骤中运行状态的变化以及运行的最终状态。可以按顺序应用 jsonpatch 操作来构建状态。
Optional
options: Partial<RunnableConfig<Record<string, any>>>Optional
streamOptions: Omit<LogStreamCallbackHandlerInput, "autoClose">从当前 runnable 创建一个新的 runnable,如果初始调用失败,它将尝试调用其他传递的回退 runnables。
一个新的 RunnableWithFallbacks。
将生命周期监听器绑定到 Runnable,返回一个新的 Runnable。“Run”对象包含关于运行的信息,包括其 ID、类型、输入、输出、错误、开始时间、结束时间以及添加到运行中的任何标签或元数据。
包含回调函数的对象。
可选
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 序列中。