可选
checkpointer可选
interrupt可选
interrupt受保护
lc_可选
name可选
step可选
stream要与构造函数参数合并的附加属性映射。键是属性名称,例如 "foo"。值是属性值,将被序列化。这些属性需要被构造函数作为参数接受。
模块的最终序列化标识符。
秘密映射,将从序列化中省略。键是构造函数参数中秘密的路径,例如 "foo.bar.baz"。值是秘密 ID,将在反序列化时使用。
处理可运行的批处理和配置的内部方法 它接受一个函数、输入值和可选的配置,并返回一个解析为输出值的 promise。
要为每个输入值执行的函数。
可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & { 可选
batchOptions: RunnableBatchOptions输出值的 Promise。
Protected
_callProtected
_get受保护
_separate可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>默认流式实现。子类应该覆盖此方法,如果它们支持流式输出。
可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>受保护
_stream可选
runManager: CallbackManagerForChainRun可选
config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>受保护
_transform辅助方法,将输入值的迭代器转换为输出值的迭代器,并带有回调函数。使用此方法在 Runnable 子类中实现 stream()
或 transform()
。
可选
options: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & { batch 的默认实现,它调用 invoke N 次。如果子类可以更高效地批量处理,则应覆盖此方法。
每个批处理调用的输入数组。
可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> | Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>[]单个调用选项对象(应用于每个批处理调用)或每个调用的数组。
可选
batchOptions: RunnableBatchOptions & { RunOutputs 数组,或者如果 batchOptions.returnExceptions 设置为混合 RunOutputs 和错误
可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> | Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>[]可选
batchOptions: RunnableBatchOptions & { 可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> | Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>[]可选
batchOptions: RunnableBatchOptions将参数绑定到 Runnable,返回一个新的 Runnable。
当调用时,将应用绑定参数的新的 RunnableBinding。
可选
options: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>返回一个新的 Runnable,它通过使用每个输入调用 invoke() 来将输入列表映射到输出列表。
创建一个新的可运行序列,按顺序运行每个单独的可运行项,将一个可运行项的输出传递到另一个可运行项或类似可运行项。
一个可运行项、函数或对象,其值为函数或可运行项。
一个新的可运行序列。
可选
config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>生成可运行项内部步骤发出的事件流。
用于创建 StreamEvents 的迭代器,这些事件提供有关可运行项进度(包括来自中间结果的 StreamEvents)的实时信息。
StreamEvent 是一个字典,具有以下模式
event
: string - 事件名称格式为:on_[runnable_type]_(start|stream|end)。name
: string - 生成事件的可运行项的名称。run_id
: string - 与生成事件的可运行项的给定执行关联的随机生成的 ID。作为父可运行项执行的一部分被调用的子可运行项被分配其自己的唯一 ID。tags
: string[] - 生成事件的可运行项的标签。metadata
: Record<string, any> - 生成事件的可运行项的元数据。data
: Record<string, any>下表说明了各种链可能发出的某些事件。为了简洁起见,表中省略了元数据字段。链定义已包含在表之后。
注意 此参考表适用于 V2 版本的模式。
+----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | event | name | chunk | input | output | +======================+==================+=================================+===============================================+=================================================+ | on_chat_model_start | [model name] | | {"messages": [[SystemMessage, HumanMessage]]} | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_chat_model_stream | [model name] | AIMessageChunk(content="hello") | | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_chat_model_end | [model name] | | {"messages": [[SystemMessage, HumanMessage]]} | AIMessageChunk(content="hello world") | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_llm_start | [model name] | | {'input': 'hello'} | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_llm_stream | [model name] | 'Hello' | | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_llm_end | [model name] | | 'Hello human!' | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_chain_start | some_runnable | | | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_chain_stream | some_runnable | "hello world!, goodbye world!" | | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_chain_end | some_runnable | | [Document(...)] | "hello world!, goodbye world!" | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_tool_start | some_tool | | {"x": 1, "y": "2"} | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_tool_end | some_tool | | | {"x": 1, "y": "2"} | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_retriever_start | [retriever name] | | {"query": "hello"} | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_retriever_end | [retriever name] | | {"query": "hello"} | [Document(...), ..] | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_prompt_start | [template_name] | | {"question": "hello"} | | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+ | on_prompt_end | [template_name] | | {"question": "hello"} | ChatPromptValue(messages: [SystemMessage, ...]) | +----------------------+------------------+---------------------------------+-----------------------------------------------+-------------------------------------------------+
"on_chain_*" 事件是对于不适合上述任何类别的 Runnables 的默认事件。
除了上面的标准事件之外,用户还可以调度自定义事件。
自定义事件只会出现在 v2
版本的 API 中!
自定义事件具有以下格式
+-----------+------+-----------------------------------------------------------------------------------------------------------+ | Attribute | Type | Description | +===========+======+===========================================================================================================+ | name | str | 用户定义的事件名称。 | +-----------+------+-----------------------------------------------------------------------------------------------------------+ | data | Any | 与事件关联的数据。这可以是任何东西,但我们建议使其可 JSON 序列化。 | +-----------+------+-----------------------------------------------------------------------------------------------------------+
以下是一个示例
Optional
streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">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">流式传输可运行项的所有输出,如回调系统报告的那样。这包括 LLM、检索器、工具等的内部运行。输出以 Log 对象的形式流式传输,其中包括描述每次步骤中运行状态如何更改的 jsonpatch 操作列表以及运行的最终状态。jsonpatch 操作可以按顺序应用以构建状态。
可选
options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>可选
streamOptions: Omit<LogStreamCallbackHandlerInput, "autoClose">可选
config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>可选
asNode: "__start__" | N将配置绑定到 Runnable,返回一个新的 Runnable。
要附加到新 Runnable 的新配置参数。
一个新的 RunnableBinding,具有与传递的配置匹配的配置。
从当前 runnable 创建一个新的 runnable,如果初始调用失败,该 runnable 将尝试调用其他传递的 fallback runnable。
如果 runnable 出错,将调用的其他 runnable。
一个新的 RunnableWithFallbacks。
将生命周期监听器绑定到 Runnable,返回一个新的 Runnable。Run 对象包含有关运行的信息,包括其 ID、类型、输入、输出、错误、startTime、endTime 以及添加到运行的任何标签或元数据。
包含回调函数的对象。
可选
on在可运行对象完成运行后调用,并带 Run 对象。
可选
config: RunnableConfig可选
on如果可运行对象抛出错误,则调用,并带 Run 对象。
可选
config: RunnableConfig可选
on在可运行对象开始运行之前调用,并带 Run 对象。
可选
config: RunnableConfig向现有可运行对象添加重试逻辑。
可选
fields: { 可选
on可选
stop一个新的 RunnableRetry,当调用时,将根据参数进行重试。
静态
is静态
lc_
构造函数参数别名映射。键是属性名称,例如 "foo"。值是将在序列化时替换键的别名。这用于例如使参数名称与 Python 匹配。