类 CompiledStateGraph<S, U, N>

类型参数

  • S
  • U
  • N extends string = typeof START

层次结构

  • CompiledGraph<N, S, U>
    • 编译状态图

构造函数

  • 类型参数

    • S
    • U
    • N extends string = "__start__"

    参数

    • __namedParameters: {
          builder: Graph<N, S, U>;
      } & PregelInterface<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    返回值 CompiledStateGraph<S, U, N>

属性

autoValidate: boolean
builder: StateGraph<unknown, S, U, N>
channels: Record<string | N, BaseChannel<unknown, unknown, unknown>>
checkpointer?: BaseCheckpointSaver
debug: boolean
inputs: string | N | (string | N)[]
interruptAfter?: "*" | ("__start__" | N)[]
interruptBefore?: "*" | ("__start__" | N)[]
lc_kwargs: SerializedFields
lc_namespace: string[]
lc_runnable: boolean
lc_serializable: boolean
name?: string
nodes: Record<"__start__" | N, PregelNode<S, U>>
outputs: string | N | (string | N)[]
stepTimeout?: number
streamChannels?: string | N | (string | N)[]
streamMode: StreamMode

访问器

  • get lc_aliases(): undefined | {
        [key: string]: string;
    }
  • 构造函数参数别名映射。键是属性名称,例如 "foo"。值是将在序列化时替换键的别名。这用于例如使参数名称与 Python 匹配。

    返回 undefined | {
        [key: string]: string;
    }

  • get lc_attributes(): undefined | SerializedFields
  • 要与构造函数参数合并的附加属性映射。键是属性名称,例如 "foo"。值是属性值,将被序列化。这些属性需要被构造函数作为参数接受。

    返回 undefined | SerializedFields

  • get lc_id(): string[]
  • 模块的最终序列化标识符。

    返回 string[]

  • get lc_secrets(): undefined | {
        [key: string]: string;
    }
  • 秘密映射,将从序列化中省略。键是构造函数参数中秘密的路径,例如 "foo.bar.baz"。值是秘密 ID,将在反序列化时使用。

    返回 undefined | {
        [key: string]: string;
    }

  • get streamChannelsAsIs(): keyof Cc | (keyof Cc)[]
  • 返回 keyof Cc | (keyof Cc)[]

  • get streamChannelsList(): (keyof Cc)[]
  • 返回 (keyof Cc)[]

方法

  • 处理可运行的批处理和配置的内部方法 它接受一个函数、输入值和可选的配置,并返回一个解析为输出值的 promise。

    类型参数

    • T extends any

    参数

    • func: ((inputs, options?, runManagers?, batchOptions?) => Promise<any[]>)

      要为每个输入值执行的函数。

        • (inputs, options?, runManagers?, batchOptions?): Promise<any[]>
        • 参数

          • inputs: T[]
          • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & {
          • 可选 runManagers: (undefined | CallbackManagerForChainRun)[]
          • 可选 batchOptions: RunnableBatchOptions

          返回 Promise<any[]>

    • inputs: T[]
    • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & {
          runType?: string;
      }> | Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & {
          runType?: string;
      }>[]
    • 可选 batchOptions: RunnableBatchOptions

    返回 Promise<any[]>

    输出值的 Promise。

  • 类型参数

    • T extends any

    参数

    • func: ((input) => Promise<any>) | ((input, config?, runManager?) => Promise<any>)
    • input: T
    • Optional options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> & {
          runType?: string;
      }

    Returns Promise<any>

  • 参数

    • config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    Returns [boolean, StreamMode, string | N | (string | N)[], string | N | (string | N)[], RunnableConfig, "*" | ("__start__" | N)[], "*" | ("__start__" | N)[]]

  • 类型参数

    • O extends PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, O> & {
          runType?: string;
      }

    参数

    • options: Partial<O> | Partial<O>[]
    • 可选 length: number

    返回 Partial<O>[]

  • 参数

    • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    返回 [RunnableConfig, Omit<Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>, keyof RunnableConfig>]

  • 默认流式实现。子类应该覆盖此方法,如果它们支持流式输出。

    参数

    • input: any
    • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    返回 AsyncGenerator<any, any, unknown>

  • 参数

    • input: any
    • logStreamCallbackHandler: LogStreamCallbackHandler
    • config: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    返回 AsyncGenerator<RunLogPatch, any, unknown>

  • 参数

    • input: AsyncGenerator<any, any, unknown>
    • 可选 runManager: CallbackManagerForChainRun
    • 可选 config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    返回 AsyncGenerator<any, any, unknown>

  • 辅助方法,将输入值的迭代器转换为输出值的迭代器,并带有回调函数。使用此方法在 Runnable 子类中实现 stream()transform()

    类型参数

    • I extends any
    • O extends any

    参数

    • inputGenerator: AsyncGenerator<I, any, unknown>
    • transformer: ((generator, runManager?, options?) => AsyncGenerator<O, any, unknown>)
        • (generator, runManager?, options?): AsyncGenerator<O, any, unknown>
        • 参数

          • generator: AsyncGenerator<I, any, unknown>
          • 可选 runManager: CallbackManagerForChainRun
          • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

          返回 AsyncGenerator<O, any, unknown>

    • 可选 options: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>> & {
          runType?: string;
      }

    返回 AsyncGenerator<O, any, unknown>

  • 将 runnable 转换为工具。返回一个新的 RunnableToolLike 实例,其中包含 runnable、名称、描述和模式。

    类型参数

    • T extends any = any

    参数

    • fields: {
          description?: string;
          name?: string;
          schema: ZodType<T, ZodTypeDef, T>;
      }
      • 可选 description?: string

        工具的描述。如果未提供,则回退到 Zod 模式上的描述,或者如果两者都未提供,则为 undefined。

      • 可选 name?: string

        工具的名称。如果未提供,则默认为 runnable 的名称。

      • schema: ZodType<T, ZodTypeDef, T>

        工具输入的 Zod 模式。从 runnable 的输入类型推断 Zod 类型。

    返回 RunnableToolLike<ZodType<ToolCall | T, ZodTypeDef, ToolCall | T>, any>

    一个 RunnableToolLike 实例,它是一个可作为工具使用的 runnable。

  • 将新字段分配给此 runnable 的字典输出。返回一个新的 runnable。

    参数

    • mapping: RunnableMapLike<Record<string, unknown>, Record<string, unknown>>

    返回 Runnable<any, any, RunnableConfig>

  • 参数

    • start: "__start__" | N
    • name: string
    • branch: Branch<S, N>

    返回 void

  • 参数

    • start: "__start__" | N | N[]
    • end: "__end__" | N

    返回 void

  • 参数

    • key: "__start__"
    • 可选 node: undefined

    返回 void

  • 参数

    • key: N
    • node: Runnable<S, U, RunnableConfig>

    返回 void

  • batch 的默认实现,它调用 invoke N 次。如果子类可以更高效地批量处理,则应覆盖此方法。

    参数

    • inputs: any[]

      每个批处理调用的输入数组。

    • 可选 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 & {
          returnExceptions?: false;
      }

    返回 Promise<any[]>

    RunOutputs 数组,或者如果 batchOptions.returnExceptions 设置为混合 RunOutputs 和错误

  • 参数

    • inputs: any[]
    • 可选 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 & {
          returnExceptions: true;
      }

    返回 Promise<any[]>

  • 参数

    • inputs: any[]
    • 可选 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

    返回 Promise<any[]>

  • 将参数绑定到 Runnable,返回一个新的 Runnable。

    参数

    • kwargs: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    返回 Runnable<any, any, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    当调用时,将应用绑定参数的新的 RunnableBinding。

  • 返回计算图的可绘制表示。

    参数

    • 可选 config: RunnableConfig & {
          xray?: number | boolean;
      }

    返回 Graph

  • 参数

    • 可选 suffix: string

    返回 string

  • 参数

    • config: RunnableConfig

    返回 Promise<StateSnapshot>

  • 参数

    • config: RunnableConfig
    • 可选 limit: number
    • 可选 before: RunnableConfig

    返回 AsyncIterableIterator<StateSnapshot>

  • 参数

    • input: any
    • 可选 options: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    Returns Promise<any>

  • 返回一个新的 Runnable,它通过使用每个输入调用 invoke() 来将输入列表映射到输出列表。

    返回 Runnable<any[], any[], PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

  • 从该 runnable 的 dict 输出中选择键。返回一个新的 runnable。

    参数

    • keys: string | string[]

    返回 Runnable<any, any, RunnableConfig>

  • 创建一个新的可运行序列,按顺序运行每个单独的可运行项,将一个可运行项的输出传递到另一个可运行项或类似可运行项。

    类型参数

    • NewRunOutput

    参数

    • coerceable: RunnableLike<any, NewRunOutput>

      一个可运行项、函数或对象,其值为函数或可运行项。

    返回 Runnable<any, Exclude<NewRunOutput, Error>, RunnableConfig>

    一个新的可运行序列。

  • 参数

    • input: any
    • 可选 config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    返回 Promise<IterableReadableStream<any>>

  • 生成可运行项内部步骤发出的事件流。

    用于创建 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 序列化。 | +-----------+------+-----------------------------------------------------------------------------------------------------------+

    以下是一个示例

    参数

    • input: any
    • options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> & {
          version: "v1" | "v2";
      }
    • Optional streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">

    返回 IterableReadableStream<StreamEvent>

    示例

    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);
    }
    }
  • 参数

    • input: any
    • options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>> & {
          encoding: "text/event-stream";
          version: "v1" | "v2";
      }
    • Optional streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">

    返回 IterableReadableStream<Uint8Array>

  • 流式传输可运行项的所有输出,如回调系统报告的那样。这包括 LLM、检索器、工具等的内部运行。输出以 Log 对象的形式流式传输,其中包括描述每次步骤中运行状态如何更改的 jsonpatch 操作列表以及运行的最终状态。jsonpatch 操作可以按顺序应用以构建状态。

    参数

    • input: any
    • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>
    • 可选 streamOptions: Omit<LogStreamCallbackHandlerInput, "autoClose">

    返回 AsyncGenerator<RunLogPatch, any, unknown>

  • 返回 Serialized

  • 返回 SerializedNotImplemented

  • 参数

    • generator: AsyncGenerator<any, any, unknown>
    • 可选 config: PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>

    返回 AsyncGenerator<any, any, unknown>

  • 参数

    • config: RunnableConfig
    • values: unknown
    • 可选 asNode: "__start__" | N

    返回 Promise<RunnableConfig>

  • 返回 this

  • 将配置绑定到 Runnable,返回一个新的 Runnable。

    参数

    • config: RunnableConfig

      要附加到新 Runnable 的新配置参数。

    返回 RunnableBinding<any, any, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    一个新的 RunnableBinding,具有与传递的配置匹配的配置。

  • 从当前 runnable 创建一个新的 runnable,如果初始调用失败,该 runnable 将尝试调用其他传递的 fallback runnable。

    参数

    • fields: {
          fallbacks: Runnable<any, any, RunnableConfig>[];
      }
      • fallbacks: Runnable<any, any, RunnableConfig>[]

        如果 runnable 出错,将调用的其他 runnable。

    返回 RunnableWithFallbacks<any, any>

    一个新的 RunnableWithFallbacks。

  • 将生命周期监听器绑定到 Runnable,返回一个新的 Runnable。Run 对象包含有关运行的信息,包括其 ID、类型、输入、输出、错误、startTime、endTime 以及添加到运行的任何标签或元数据。

    参数

    • params: {
          onEnd?: ((run, config?) => void | Promise<void>);
          onError?: ((run, config?) => void | Promise<void>);
          onStart?: ((run, config?) => void | Promise<void>);
      }

      包含回调函数的对象。

      • 可选 onEnd?: ((run, config?) => void | Promise<void>)

        在可运行对象完成运行后调用,并带 Run 对象。

          • (run, config?): void | Promise<void>
          • 参数

            • run: Run
            • 可选 config: RunnableConfig

            返回 void | Promise<void>

      • 可选 onError?: ((run, config?) => void | Promise<void>)

        如果可运行对象抛出错误,则调用,并带 Run 对象。

          • (run, config?): void | Promise<void>
          • 参数

            • run: Run
            • 可选 config: RunnableConfig

            返回 void | Promise<void>

      • 可选 onStart?: ((run, config?) => void | Promise<void>)

        在可运行对象开始运行之前调用,并带 Run 对象。

          • (run, config?): void | Promise<void>
          • 参数

            • run: Run
            • 可选 config: RunnableConfig

            返回 void | Promise<void>

    返回 Runnable<any, any, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

  • 向现有可运行对象添加重试逻辑。

    参数

    • 可选 fields: {
          onFailedAttempt?: RunnableRetryFailedAttemptHandler;
          stopAfterAttempt?: number;
      }
      • 可选 onFailedAttempt?: RunnableRetryFailedAttemptHandler
      • 可选 stopAfterAttempt?: number

    返回 RunnableRetry<any, any, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>>>

    一个新的 RunnableRetry,当调用时,将根据参数进行重试。

  • 参数

    • thing: any

    返回 thing is Runnable<any, any, RunnableConfig>

  • 返回 string