类 CompiledStateGraph<S, U, N, I, O, C>

构建和编译 StateGraph 的最终结果。不应直接实例化,只能使用 StateGraph 的 .compile() 实例方法。

类型参数

继承层级 (查看完整内容)

构造函数

属性

节点类型: N
运行输入: S
运行输出: U
自动验证: boolean

编译时是否自动验证图结构。默认为 true。

构建器: StateGraph<unknown, S, U, N, I, O, C>
缓存?: BaseCache<unknown>

图的可选缓存,用于缓存任务。

通道: Record<string | N, BaseChannel<unknown, unknown, unknown>>

图中的通道,将通道名称映射到其 BaseChannel 或 ManagedValueSpec 实例

检查点保存器?: false | BaseCheckpointSaver<number>

用于持久化图状态的可选检查点保存器。如果提供,则在每个超步保存图状态的检查点。当为 false 或 undefined 时,检查点保存功能被禁用,图将无法保存或恢复状态。

配置?: LangGraphRunnableConfig<Record<string, any>>

图执行的默认配置,可以按每次调用进行覆盖

调试: boolean

是否启用调试日志记录。默认为 false。

输入通道: string | N | (string | N)[]

图的输入通道。当图被调用时,这些通道接收初始输入。可以是单个通道键或通道键数组。

中断后?: "*" | ("__start__" | N)[]

可选的节点名称数组或“all”,用于在执行这些节点后中断。用于实现人机协作工作流。

中断前?: "*" | ("__start__" | N)[]

可选的节点名称数组或“all”,用于在执行这些节点前中断。用于实现人机协作工作流。

lc_kwargs: SerializedFields
lc_runnable: boolean
lc_可序列化: boolean
名称?: string
节点: Record<"__start__" | N, PregelNode<S, U>>

图中的节点,将节点名称映射到其 PregelNode 实例

输出通道: string | N | (string | N)[]

图的输出通道。当图完成时,这些通道包含最终输出。可以是单个通道键或通道键数组。

重试策略?: RetryPolicy

用于处理节点执行失败的可选重试策略

步长超时?: number

每个超步执行的可选超时时间(毫秒)

存储?: BaseStore

图的可选长期内存存储,允许数据在不同线程间持久化和检索

流式通道?: string | N | (string | N)[]

可选的流式通道。如果未指定,将流式传输所有通道。可以是单个通道键或通道键数组。

流式模式: StreamMode[]

此图启用的流式模式。默认为 ["values"]。支持的模式有

  • "values":在每个步骤后流式传输完整状态
  • "updates":在每个步骤后流式传输状态更新
  • "messages":流式传输节点内的消息
  • "custom":流式传输节点内的自定义事件
  • "debug":流式传输与图执行相关的事件 - 有助于跟踪和调试图执行
触发到节点: Record<string, string[]>

访问器

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

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

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

    返回 undefined | SerializedFields

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

    返回 string[]

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

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

  • get lc_serializable_keys(): undefined | string[]
  • 应序列化的键的手动列表。如果未被覆盖,所有传入构造函数的字段都将被序列化。

    返回 undefined | string[]

  • get streamChannelsAsIs(): keyof Channels | (keyof Channels)[]
  • 获取要以原始格式流式传输的通道。如果指定了 streamChannels,则按原样返回(单个键或数组)。否则,将图中所有通道作为数组返回。

    返回 keyof Channels | (keyof Channels)[]

    要流式传输的通道键,可以是单个键或数组

  • get streamChannelsList(): (keyof Channels)[]
  • 获取应流式传输的所有通道的列表。如果指定了 streamChannels,则返回这些通道。否则,返回图中所有通道。

    返回 (keyof Channels)[]

    要流式传输的通道键数组

方法

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

    类型参数

    • T extends null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>

    参数

    • func: ((inputs, options?, runManagers?, batchOptions?) => Promise<(Error | StateType<ToStateDefinition<O>>)[]>)

      对每个输入值执行的函数。

        • (generator, runManager?, options?): AsyncGenerator<O, any, any>
        • 参数

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

          返回 Promise<(Error | StateType<ToStateDefinition<O>>)[]>

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

    返回 Promise<(Error | StateType<ToStateDefinition<O>>)[]>

    解析为输出值的 Promise。

  • 类型参数

    参数

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

    返回 Partial<O>[]

  • 参数

    返回 AsyncGenerator<RunLogPatch, any, any>

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

    类型参数

    • I extends null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>
    • O extends StateType<ToStateDefinition<O>>

    参数

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

          返回 AsyncGenerator<O, any, any>

    • 可选 options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>> & {
          runType?: string;
      }

    返回 AsyncGenerator<O, any, any>

  • 参数

    • config: Partial<undefined | Record<string, any>>

    返回 Promise<undefined | Record<string, any>>

  • 参数

    返回 Promise<UpdateType<ToStateDefinition<I>>>

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

    类型参数

    • T extends null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string> = null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>

    参数

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

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

      • 可选 name?: string

        工具的名称。如果未提供,将默认为可运行对象的名称。

      • schema: ZodType<T, ZodTypeDef, T>

        工具输入的 Zod 模式。从可运行对象的输入类型推断 Zod 类型。

    返回 RunnableToolLike<ZodType<ToolCall | T, ZodTypeDef, ToolCall | T>, StateType<ToStateDefinition<O>>>

    RunnableToolLike 的一个实例,它是一个可作为工具使用的可运行对象。

  • 为该可运行对象的字典输出分配新字段。返回一个新的可运行对象。

    参数

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

    返回 Runnable<any, any, RunnableConfig<Record<string, any>>>

  • 参数

    • start: "__start__" | N
    • _: string
    • branch: Branch<S, N, LangGraphRunnableConfig<Record<string, any>>>
    • 可选 options: {
          withReader?: boolean;
      }
      • 可选 withReader?: boolean

    返回 void

  • 参数

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

    返回 void

  • 参数

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

    返回 void

  • 参数

    • key: N
    • node: StateGraphNodeSpec<S, U>

    返回 void

  • batch 的默认实现,它会调用 invoke N 次。子类如果能更有效地批处理,应覆盖此方法。

    参数

    • inputs: (null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>)[]

      每次批量调用的输入数组。

    • Optional options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>> | Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>>[]

      应用于每次批量调用的单个调用选项对象,或用于每次调用的数组。

    • Optional batchOptions: RunnableBatchOptions & {
          returnExceptions?: false;
      }

    返回 Promise<StateType<ToStateDefinition<O>>[]>

    RunOutputs 数组,如果设置了 batchOptions.returnExceptions,则可能是 RunOutputs 和错误的混合数组

  • 参数

    返回 Promise<(Error | StateType<ToStateDefinition<O>>)[]>

  • 参数

    返回 Promise<(Error | StateType<ToStateDefinition<O>>)[]>

  • 返回 Promise<void>

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

    参数

    • Optional config: RunnableConfig<Record<string, any>> & {
          xray?: number | boolean;
      }

    返回 Graph

    已弃用

    请改用 getGraphAsync。在下一个核心次要版本中,异步方法将成为默认方法。

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

    参数

    • Optional config: RunnableConfig<Record<string, any>> & {
          xray?: number | boolean;
      }

    返回 Promise<Graph>

  • 参数

    • Optional suffix: string

    返回 string

  • 获取图的当前状态。需要配置检查点。

    参数

    • config: RunnableConfig<Record<string, any>>

      检索状态的配置

    • Optional options: GetStateOptions

      附加选项

    返回 Promise<StateSnapshot>

    当前图状态的快照

    抛出

    如果未配置检查点

  • 获取图状态的历史记录。需要配置检查点。对于以下情况很有用:

    • 调试执行历史
    • 实现时间旅行
    • 分析图行为

    参数

    • config: RunnableConfig<Record<string, any>>

      检索历史记录的配置

    • Optional options: CheckpointListOptions

      过滤历史记录的选项

    返回 AsyncIterableIterator<StateSnapshot, any, any>

    状态快照的异步迭代器

    抛出

    如果未配置检查点

  • 获取此图中的所有子图。子图是嵌套在此图节点中的 Pregel 实例。

    参数

    • Optional namespace: string

      用于过滤子图的可选命名空间

    • Optional recurse: boolean

      是否递归获取子图的子图

    返回 Generator<[string, Pregel<any, any, StrRecord<string, any>, any, any, any, any>], any, any>

    生成器,生成 [名称, 子图] 元组

    已弃用

    请改用 getSubgraphsAsync。异步方法将成为下一个次要版本中的默认方法。

  • 异步获取此图中的所有子图。子图是嵌套在此图节点中的 Pregel 实例。

    参数

    • Optional namespace: string

      用于过滤子图的可选命名空间

    • Optional recurse: boolean

      是否递归获取子图的子图

    返回 AsyncGenerator<[string, Pregel<any, any, StrRecord<string, any>, any, any, any, any>], any, any>

    生成 [名称, 子图] 元组的异步生成器

  • 从此可运行项的字典输出中选择键。返回一个新的可运行项。

    参数

    • keys: string | string[]

    返回 Runnable<any, any, RunnableConfig<Record<string, any>>>

  • 创建一个新的可运行序列,它按顺序运行每个独立的 Runnable,并将一个 Runnable 的输出传递给另一个 Runnable 或类似 Runnable 的对象。

    类型参数

    • NewRunOutput

    参数

    • coerceable: RunnableLike<StateType<ToStateDefinition<O>>, NewRunOutput, RunnableConfig<Record<string, any>>>

      可运行项、函数或其值为函数或可运行项的对象。

    返回 Runnable<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, Exclude<NewRunOutput, Error>, RunnableConfig<Record<string, any>>>

    一个新的可运行序列。

  • 参数

    • input: null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>
    • options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>> & {
          version: "v1" | "v2";
      }
    • Optional streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">

    返回 IterableReadableStream<StreamEvent>

    继承文档

  • 参数

    • input: null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>
    • options: Partial<PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>> & {
          encoding: "text/event-stream";
          version: "v1" | "v2";
      }
    • Optional streamOptions: Omit<EventStreamCallbackHandlerInput, "autoClose">

    返回 IterableReadableStream<Uint8Array<ArrayBufferLike>>

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

    参数

    返回 AsyncGenerator<RunLogPatch, any, any>

  • 返回 Serialized

  • 返回 SerializedNotImplemented

  • transform 的默认实现,它会缓冲输入然后调用 stream。如果子类可以在输入仍在生成时开始产生输出,则应重写此方法。

    参数

    返回 AsyncGenerator<StateType<ToStateDefinition<O>>, any, any>

  • 使用新值更新图的状态。需要配置检查点。

    此方法可用于

    • 实现人工干预工作流
    • 在断点期间修改图状态
    • 将外部输入集成到图中

    参数

    • inputConfig: LangGraphRunnableConfig<Record<string, any>>

      更新的配置

    • values: unknown

      用于更新状态的值

    • 可选 asNode: string | N

      可选的节点名称,用于归因此次更新

    返回 Promise<RunnableConfig<Record<string, any>>>

    更新的配置

    抛出

    如果未配置检查点

    抛出

    如果更新无法归因于某个节点

  • 验证图结构以确保其格式正确。检查以下项:

    • 没有孤立节点
    • 有效的输入/输出通道配置
    • 有效的中断配置

    返回 this

    this - 用于方法链的Pregel实例

    抛出

    如果图结构无效

  • 使用更新的配置创建一个新的Pregel图实例。此方法遵循不可变模式 - 它不修改当前实例,而是返回一个包含合并配置的新实例。

    参数

    • config: RunnableConfig<Record<string, any>>

      要与当前配置合并的配置

    返回 CompiledStateGraph<S, U, N, I, O, C>

    包含合并配置的新Pregel实例

    示例

    // Create a new instance with debug enabled
    const debugGraph = graph.withConfig({ debug: true });

    // Create a new instance with a specific thread ID
    const threadGraph = graph.withConfig({
    configurable: { thread_id: "123" }
    });
  • 从当前可运行对象创建一个新的可运行对象,如果初始调用失败,该对象将尝试调用其他传入的备用可运行对象。

    参数

    • fields: {
          fallbacks: Runnable<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, StateType<ToStateDefinition<O>>, RunnableConfig<Record<string, any>>>[];
      } | Runnable<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, StateType<ToStateDefinition<O>>, RunnableConfig<Record<string, any>>>[]

    返回 RunnableWithFallbacks<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, StateType<ToStateDefinition<O>>>

    一个新的 RunnableWithFallbacks。

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

    参数

    • 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<Record<string, any>>

            返回 void | Promise<void>

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

        如果可运行对象抛出错误,则调用此函数,并传入 Run 对象。

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

            • run: Run
            • 可选 config: RunnableConfig<Record<string, any>>

            返回 void | Promise<void>

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

        在可运行对象开始运行前调用,并传入 Run 对象。

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

            • run: Run
            • 可选 config: RunnableConfig<Record<string, any>>

            返回 void | Promise<void>

    返回 Runnable<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, StateType<ToStateDefinition<O>>, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>>

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

    参数

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

    返回 RunnableRetry<null | UpdateType<ToStateDefinition<I>> | Command<unknown, Record<string, unknown>, string>, StateType<ToStateDefinition<O>>, PregelOptions<Record<"__start__" | N, PregelNode<S, U>>, Record<string | N, BaseChannel<unknown, unknown, unknown>>, StateType<ToStateDefinition<C>> & Record<string, any>, undefined | StreamMode | StreamMode[], boolean>>

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

  • 参数

    • thing: any

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