RemoteGraph¶
类
名称 | 描述 |
---|---|
RemoteGraph |
|
RemoteGraph ¶
基类: PregelProtocol
RemoteGraph
类是一个客户端实现,用于调用实现了 LangGraph 服务器 API 规范的远程 API。
例如,RemoteGraph
类可用于调用 LangGraph 平台部署的 API。
RemoteGraph
的行为与 Graph
相同,可直接用作另一个 Graph
中的节点。
方法
名称 | 描述 |
---|---|
__init__ |
指定 |
get_graph |
通过图名称获取图。 |
aget_graph |
通过图名称获取图。 |
get_state |
获取线程的状态。 |
aget_state |
获取线程的状态。 |
get_state_history |
获取线程的状态历史。 |
aget_state_history |
获取线程的状态历史。 |
update_state |
更新线程的状态。 |
aupdate_state |
更新线程的状态。 |
stream |
创建运行并流式传输结果。 |
astream |
创建运行并流式传输结果。 |
invoke |
创建一个运行,等待其完成并返回最终状态。 |
ainvoke |
创建一个运行,等待其完成并返回最终状态。 |
get_name |
获取可运行对象的名称。 |
get_input_schema |
获取可用于验证可运行对象输入的 pydantic 模型。 |
get_input_jsonschema |
获取表示可运行对象输入的 JSON 模式。 |
get_output_schema |
获取可用于验证可运行对象输出的 pydantic 模型。 |
get_output_jsonschema |
获取表示可运行对象输出的 JSON 模式。 |
config_schema |
此可运行对象接受的配置类型,指定为 pydantic 模型。 |
get_config_jsonschema |
获取表示可运行对象配置的 JSON 模式。 |
get_prompts |
返回此可运行对象使用的提示列表。 |
__or__ |
将此可运行对象与另一个对象组合以创建 RunnableSequence。 |
__ror__ |
将此可运行对象与另一个对象组合以创建 RunnableSequence。 |
pipe |
将此可运行对象与类可运行对象组合以创建 RunnableSequence。 |
pick |
从此可运行对象的输出字典中选择键。 |
assign |
为可运行对象的字典输出分配新字段。 |
batch |
默认实现使用线程池执行器并行运行 invoke。 |
batch_as_completed |
在一系列输入上并行运行 invoke。 |
abatch |
默认实现使用 asyncio.gather 并行运行 ainvoke。 |
abatch_as_completed |
在一系列输入上并行运行 ainvoke。 |
astream_log |
流式传输可运行对象的所有输出,如回调系统所报告。 |
transform |
transform 的默认实现,它会缓冲输入并调用 astream。 |
atransform |
atransform 的默认实现,它会缓冲输入并调用 astream。 |
bind |
将参数绑定到可运行对象,返回一个新的可运行对象。 |
with_listeners |
将生命周期监听器绑定到可运行对象,返回一个新的可运行对象。 |
with_alisteners |
将异步生命周期监听器绑定到可运行对象,返回一个新的可运行对象。 |
with_types |
将输入和输出类型绑定到可运行对象,返回一个新的可运行对象。 |
with_retry |
创建一个新的可运行对象,在出现异常时重试原始可运行对象。 |
map |
返回一个新的可运行对象,它将输入列表映射到输出列表。 |
with_fallbacks |
为可运行对象添加回退,返回一个新的可运行对象。 |
as_tool |
从可运行对象创建 BaseTool。 |
属性
名称 | 类型 | 描述 |
---|---|---|
InputType |
type[Input]
|
此可运行对象接受的输入类型,指定为类型注解。 |
OutputType |
type[Output]
|
此可运行对象生成的输出类型,指定为类型注解。 |
input_schema |
type[BaseModel]
|
此可运行对象接受的输入类型,指定为 pydantic 模型。 |
output_schema |
type[BaseModel]
|
此可运行对象生成的输出类型,指定为 pydantic 模型。 |
config_specs |
list[ConfigurableFieldSpec]
|
此可运行对象的配置字段列表。 |
__init__ ¶
__init__(
assistant_id: str,
/,
*,
url: Optional[str] = None,
api_key: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
client: Optional[LangGraphClient] = None,
sync_client: Optional[SyncLangGraphClient] = None,
config: Optional[RunnableConfig] = None,
name: Optional[str] = None,
)
指定 url
、api_key
和/或 headers
以创建默认的同步和异步客户端。
如果提供了 client
或 sync_client
,将使用它们而不是默认客户端。有关默认客户端的详细信息,请参阅 LangGraphClient
和 SyncLangGraphClient
。必须提供 url
、client
或 sync_client
中的至少一个。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要使用的远程图的助手 ID 或图名称。 |
必填 |
url
|
可选[str]
|
远程 API 的 URL。 |
无
|
api_key
|
可选[str]
|
用于身份验证的 API 密钥。如果未提供,将从环境中读取( |
无
|
headers
|
可选[dict[str, str]]
|
请求中包含的额外头部。 |
无
|
client
|
可选[LangGraphClient]
|
要使用的 |
无
|
sync_client
|
可选[SyncLangGraphClient]
|
要使用的 |
无
|
config
|
可选[RunnableConfig]
|
一个可选的 |
无
|
name
|
可选[str]
|
附加到 RemoteGraph 实例的可读名称。这对于通过 |
无
|
get_graph ¶
aget_graph async
¶
get_state ¶
get_state(
config: RunnableConfig, *, subgraphs: bool = False
) -> StateSnapshot
获取线程的状态。
如果配置中指定了检查点,此方法调用 POST /threads/{thread_id}/state/checkpoint
,如果未指定检查点,则调用 GET /threads/{thread_id}/state
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
subgraphs
|
bool
|
在状态中包含子图。 |
False
|
返回
类型 | 描述 |
---|---|
StateSnapshot
|
线程的最新状态。 |
aget_state async
¶
aget_state(
config: RunnableConfig, *, subgraphs: bool = False
) -> StateSnapshot
获取线程的状态。
如果配置中指定了检查点,此方法调用 POST /threads/{thread_id}/state/checkpoint
,如果未指定检查点,则调用 GET /threads/{thread_id}/state
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
subgraphs
|
bool
|
在状态中包含子图。 |
False
|
返回
类型 | 描述 |
---|---|
StateSnapshot
|
线程的最新状态。 |
get_state_history ¶
get_state_history(
config: RunnableConfig,
*,
filter: Optional[dict[str, Any]] = None,
before: Optional[RunnableConfig] = None,
limit: Optional[int] = None
) -> Iterator[StateSnapshot]
获取线程的状态历史。
此方法调用 POST /threads/{thread_id}/history
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
filter
|
可选[dict[str, Any]]
|
用于过滤的元数据。 |
无
|
before
|
可选[RunnableConfig]
|
一个 |
无
|
limit
|
可选[int]
|
要返回的最大状态数。 |
无
|
返回
类型 | 描述 |
---|---|
迭代器[StateSnapshot]
|
线程的状态。 |
aget_state_history async
¶
aget_state_history(
config: RunnableConfig,
*,
filter: Optional[dict[str, Any]] = None,
before: Optional[RunnableConfig] = None,
limit: Optional[int] = None
) -> AsyncIterator[StateSnapshot]
获取线程的状态历史。
此方法调用 POST /threads/{thread_id}/history
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
filter
|
可选[dict[str, Any]]
|
用于过滤的元数据。 |
无
|
before
|
可选[RunnableConfig]
|
一个 |
无
|
limit
|
可选[int]
|
要返回的最大状态数。 |
无
|
返回
类型 | 描述 |
---|---|
异步迭代器[StateSnapshot]
|
线程的状态。 |
update_state ¶
update_state(
config: RunnableConfig,
values: Optional[Union[dict[str, Any], Any]],
as_node: Optional[str] = None,
) -> RunnableConfig
更新线程的状态。
此方法调用 POST /threads/{thread_id}/state
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
values
|
可选[Union[dict[str, Any], Any]]
|
要更新到状态的值。 |
必填 |
as_node
|
可选[str]
|
更新状态,就好像此节点刚刚执行一样。 |
无
|
返回
类型 | 描述 |
---|---|
RunnableConfig
|
已更新线程的 |
aupdate_state async
¶
aupdate_state(
config: RunnableConfig,
values: Optional[Union[dict[str, Any], Any]],
as_node: Optional[str] = None,
) -> RunnableConfig
更新线程的状态。
此方法调用 POST /threads/{thread_id}/state
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
RunnableConfig
|
一个 |
必填 |
values
|
可选[Union[dict[str, Any], Any]]
|
要更新到状态的值。 |
必填 |
as_node
|
可选[str]
|
更新状态,就好像此节点刚刚执行一样。 |
无
|
返回
类型 | 描述 |
---|---|
RunnableConfig
|
已更新线程的 |
stream ¶
stream(
input: Union[dict[str, Any], Any],
config: Optional[RunnableConfig] = None,
*,
stream_mode: Optional[
Union[StreamMode, list[StreamMode]]
] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
subgraphs: bool = False,
**kwargs: Any
) -> Iterator[Union[dict[str, Any], Any]]
创建运行并流式传输结果。
如果配置的 configurable
字段中指定了 thread_id
,此方法调用 POST /threads/{thread_id}/runs/stream
,否则调用 POST /runs/stream
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
Union[dict[str, Any], Any]
|
图的输入。 |
必填 |
config
|
可选[RunnableConfig]
|
用于图调用的 |
无
|
stream_mode
|
可选[Union[StreamMode, list[StreamMode]]]
|
要使用的流模式。 |
无
|
interrupt_before
|
可选[Union[All, Sequence[str]]]
|
在这些节点之前中断图。 |
无
|
interrupt_after
|
可选[Union[All, Sequence[str]]]
|
在这些节点之后中断图。 |
无
|
subgraphs
|
bool
|
从子图流式传输。 |
False
|
**kwargs
|
Any
|
要传递给 client.runs.stream 的附加参数。 |
{}
|
生成
类型 | 描述 |
---|---|
Union[dict[str, Any], Any]
|
图的输出。 |
astream async
¶
astream(
input: Union[dict[str, Any], Any],
config: Optional[RunnableConfig] = None,
*,
stream_mode: Optional[
Union[StreamMode, list[StreamMode]]
] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
subgraphs: bool = False,
**kwargs: Any
) -> AsyncIterator[Union[dict[str, Any], Any]]
创建运行并流式传输结果。
如果配置的 configurable
字段中指定了 thread_id
,此方法调用 POST /threads/{thread_id}/runs/stream
,否则调用 POST /runs/stream
。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
Union[dict[str, Any], Any]
|
图的输入。 |
必填 |
config
|
可选[RunnableConfig]
|
用于图调用的 |
无
|
stream_mode
|
可选[Union[StreamMode, list[StreamMode]]]
|
要使用的流模式。 |
无
|
interrupt_before
|
可选[Union[All, Sequence[str]]]
|
在这些节点之前中断图。 |
无
|
interrupt_after
|
可选[Union[All, Sequence[str]]]
|
在这些节点之后中断图。 |
无
|
subgraphs
|
bool
|
从子图流式传输。 |
False
|
**kwargs
|
Any
|
要传递给 client.runs.stream 的附加参数。 |
{}
|
生成
类型 | 描述 |
---|---|
异步迭代器[Union[dict[str, Any], Any]]
|
图的输出。 |
invoke ¶
invoke(
input: Union[dict[str, Any], Any],
config: Optional[RunnableConfig] = None,
*,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
**kwargs: Any
) -> Union[dict[str, Any], Any]
创建一个运行,等待其完成并返回最终状态。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
Union[dict[str, Any], Any]
|
图的输入。 |
必填 |
config
|
可选[RunnableConfig]
|
用于图调用的 |
无
|
interrupt_before
|
可选[Union[All, Sequence[str]]]
|
在这些节点之前中断图。 |
无
|
interrupt_after
|
可选[Union[All, Sequence[str]]]
|
在这些节点之后中断图。 |
无
|
**kwargs
|
Any
|
要传递给 RemoteGraph.stream 的附加参数。 |
{}
|
返回
类型 | 描述 |
---|---|
Union[dict[str, Any], Any]
|
图的输出。 |
ainvoke async
¶
ainvoke(
input: Union[dict[str, Any], Any],
config: Optional[RunnableConfig] = None,
*,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
**kwargs: Any
) -> Union[dict[str, Any], Any]
创建一个运行,等待其完成并返回最终状态。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
Union[dict[str, Any], Any]
|
图的输入。 |
必填 |
config
|
可选[RunnableConfig]
|
用于图调用的 |
无
|
interrupt_before
|
可选[Union[All, Sequence[str]]]
|
在这些节点之前中断图。 |
无
|
interrupt_after
|
可选[Union[All, Sequence[str]]]
|
在这些节点之后中断图。 |
无
|
**kwargs
|
Any
|
要传递给 RemoteGraph.astream 的附加参数。 |
{}
|
返回
类型 | 描述 |
---|---|
Union[dict[str, Any], Any]
|
图的输出。 |
get_name ¶
获取可运行对象的名称。
get_input_schema ¶
get_input_schema(
config: Optional[RunnableConfig] = None,
) -> type[BaseModel]
获取可用于验证可运行对象输入的 pydantic 模型。
利用 configurable_fields 和 configurable_alternatives 方法的可运行对象将具有取决于调用配置的动态输入模式。
此方法允许获取特定配置的输入模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
可选[RunnableConfig]
|
生成模式时使用的配置。 |
无
|
返回
类型 | 描述 |
---|---|
type[BaseModel]
|
可用于验证输入的 pydantic 模型。 |
get_input_jsonschema ¶
get_input_jsonschema(
config: Optional[RunnableConfig] = None,
) -> dict[str, Any]
获取表示可运行对象输入的 JSON 模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
可选[RunnableConfig]
|
生成模式时使用的配置。 |
无
|
返回
类型 | 描述 |
---|---|
dict[str, Any]
|
表示可运行对象输入的 JSON 模式。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
def add_one(x: int) -> int:
return x + 1
runnable = RunnableLambda(add_one)
print(runnable.get_input_jsonschema())
.. versionadded:: 0.3.0
get_output_schema ¶
get_output_schema(
config: Optional[RunnableConfig] = None,
) -> type[BaseModel]
获取可用于验证可运行对象输出的 pydantic 模型。
利用 configurable_fields 和 configurable_alternatives 方法的可运行对象将具有取决于调用配置的动态输出模式。
此方法允许获取特定配置的输出模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
可选[RunnableConfig]
|
生成模式时使用的配置。 |
无
|
返回
类型 | 描述 |
---|---|
type[BaseModel]
|
可用于验证输出的 pydantic 模型。 |
get_output_jsonschema ¶
get_output_jsonschema(
config: Optional[RunnableConfig] = None,
) -> dict[str, Any]
获取表示可运行对象输出的 JSON 模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
config
|
可选[RunnableConfig]
|
生成模式时使用的配置。 |
无
|
返回
类型 | 描述 |
---|---|
dict[str, Any]
|
表示可运行对象输出的 JSON 模式。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
def add_one(x: int) -> int:
return x + 1
runnable = RunnableLambda(add_one)
print(runnable.get_output_jsonschema())
.. versionadded:: 0.3.0
config_schema ¶
get_config_jsonschema ¶
get_prompts ¶
get_prompts(
config: Optional[RunnableConfig] = None,
) -> list[BasePromptTemplate]
返回此可运行对象使用的提示列表。
__or__ ¶
__or__(
other: Union[
Runnable[Any, Other],
Callable[[Any], Other],
Callable[[Iterator[Any]], Iterator[Other]],
Mapping[
str,
Union[
Runnable[Any, Other],
Callable[[Any], Other],
Any,
],
],
],
) -> RunnableSerializable[Input, Other]
将此可运行对象与另一个对象组合以创建 RunnableSequence。
__ror__ ¶
__ror__(
other: Union[
Runnable[Other, Any],
Callable[[Other], Any],
Callable[[Iterator[Other]], Iterator[Any]],
Mapping[
str,
Union[
Runnable[Other, Any],
Callable[[Other], Any],
Any,
],
],
],
) -> RunnableSerializable[Other, Output]
将此可运行对象与另一个对象组合以创建 RunnableSequence。
pipe ¶
pipe(
*others: Union[
Runnable[Any, Other], Callable[[Any], Other]
],
name: Optional[str] = None
) -> RunnableSerializable[Input, Other]
将此可运行对象与类可运行对象组合以创建 RunnableSequence。
等同于 RunnableSequence(self, *others)
或 self | others[0] | ...
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
def add_one(x: int) -> int:
return x + 1
def mul_two(x: int) -> int:
return x * 2
runnable_1 = RunnableLambda(add_one)
runnable_2 = RunnableLambda(mul_two)
sequence = runnable_1.pipe(runnable_2)
# Or equivalently:
# sequence = runnable_1 | runnable_2
# sequence = RunnableSequence(first=runnable_1, last=runnable_2)
sequence.invoke(1)
await sequence.ainvoke(1)
# -> 4
sequence.batch([1, 2, 3])
await sequence.abatch([1, 2, 3])
# -> [4, 6, 8]
pick ¶
从此可运行对象的输出字典中选择键。
选择单个键
.. code-block:: python
import json
from langchain_core.runnables import RunnableLambda, RunnableMap
as_str = RunnableLambda(str)
as_json = RunnableLambda(json.loads)
chain = RunnableMap(str=as_str, json=as_json)
chain.invoke("[1, 2, 3]")
# -> {"str": "[1, 2, 3]", "json": [1, 2, 3]}
json_only_chain = chain.pick("json")
json_only_chain.invoke("[1, 2, 3]")
# -> [1, 2, 3]
选择键列表
.. code-block:: python
from typing import Any
import json
from langchain_core.runnables import RunnableLambda, RunnableMap
as_str = RunnableLambda(str)
as_json = RunnableLambda(json.loads)
def as_bytes(x: Any) -> bytes:
return bytes(x, "utf-8")
chain = RunnableMap(
str=as_str,
json=as_json,
bytes=RunnableLambda(as_bytes)
)
chain.invoke("[1, 2, 3]")
# -> {"str": "[1, 2, 3]", "json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
json_and_bytes_chain = chain.pick(["json", "bytes"])
json_and_bytes_chain.invoke("[1, 2, 3]")
# -> {"json": [1, 2, 3], "bytes": b"[1, 2, 3]"}
assign ¶
assign(
**kwargs: Union[
Runnable[dict[str, Any], Any],
Callable[[dict[str, Any]], Any],
Mapping[
str,
Union[
Runnable[dict[str, Any], Any],
Callable[[dict[str, Any]], Any],
],
],
],
) -> RunnableSerializable[Any, Any]
为可运行对象的字典输出分配新字段。
返回一个新的可运行对象。
.. code-block:: python
from langchain_community.llms.fake import FakeStreamingListLLM
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.runnables import Runnable
from operator import itemgetter
prompt = (
SystemMessagePromptTemplate.from_template("You are a nice assistant.")
+ "{question}"
)
llm = FakeStreamingListLLM(responses=["foo-lish"])
chain: Runnable = prompt | llm | {"str": StrOutputParser()}
chain_with_assign = chain.assign(hello=itemgetter("str") | llm)
print(chain_with_assign.input_schema.model_json_schema())
# {'title': 'PromptInput', 'type': 'object', 'properties':
{'question': {'title': 'Question', 'type': 'string'}}}
print(chain_with_assign.output_schema.model_json_schema())
# {'title': 'RunnableSequenceOutput', 'type': 'object', 'properties':
{'str': {'title': 'Str',
'type': 'string'}, 'hello': {'title': 'Hello', 'type': 'string'}}}
batch ¶
batch(
inputs: list[Input],
config: Optional[
Union[RunnableConfig, list[RunnableConfig]]
] = None,
*,
return_exceptions: bool = False,
**kwargs: Optional[Any]
) -> list[Output]
默认实现使用线程池执行器并行运行 invoke。
批处理的默认实现对于 IO 密集型可运行对象非常有效。
如果子类可以更高效地进行批处理,则应覆盖此方法;例如,如果底层可运行对象使用支持批处理模式的 API。
batch_as_completed ¶
batch_as_completed(
inputs: Sequence[Input],
config: Optional[
Union[RunnableConfig, Sequence[RunnableConfig]]
] = None,
*,
return_exceptions: bool = False,
**kwargs: Optional[Any]
) -> Iterator[tuple[int, Union[Output, Exception]]]
在一系列输入上并行运行 invoke。
按完成顺序生成结果。
abatch async
¶
abatch(
inputs: list[Input],
config: Optional[
Union[RunnableConfig, list[RunnableConfig]]
] = None,
*,
return_exceptions: bool = False,
**kwargs: Optional[Any]
) -> list[Output]
默认实现使用 asyncio.gather 并行运行 ainvoke。
批处理的默认实现对于 IO 密集型可运行对象非常有效。
如果子类可以更高效地进行批处理,则应覆盖此方法;例如,如果底层可运行对象使用支持批处理模式的 API。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
inputs
|
list[Input]
|
可运行对象的输入列表。 |
必填 |
config
|
可选[Union[RunnableConfig, list[RunnableConfig]]]
|
调用可运行对象时使用的配置。配置支持标准键,如用于跟踪的“tags”、“metadata”,用于控制并行工作量的“max_concurrency”以及其他键。请参阅 RunnableConfig 了解更多详情。默认为 None。 |
无
|
return_exceptions
|
bool
|
是否返回异常而不是抛出它们。默认为 False。 |
False
|
kwargs
|
可选[Any]
|
要传递给可运行对象的附加关键字参数。 |
{}
|
返回
类型 | 描述 |
---|---|
list[Output]
|
可运行对象的输出列表。 |
abatch_as_completed async
¶
abatch_as_completed(
inputs: Sequence[Input],
config: Optional[
Union[RunnableConfig, Sequence[RunnableConfig]]
] = None,
*,
return_exceptions: bool = False,
**kwargs: Optional[Any]
) -> AsyncIterator[tuple[int, Union[Output, Exception]]]
在一系列输入上并行运行 ainvoke。
按完成顺序生成结果。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
inputs
|
Sequence[Input]
|
可运行对象的输入列表。 |
必填 |
config
|
可选[Union[RunnableConfig, Sequence[RunnableConfig]]]
|
调用可运行对象时使用的配置。配置支持标准键,如用于跟踪的“tags”、“metadata”,用于控制并行工作量的“max_concurrency”以及其他键。请参阅 RunnableConfig 了解更多详情。默认为 None。默认为 None。 |
无
|
return_exceptions
|
bool
|
是否返回异常而不是抛出它们。默认为 False。 |
False
|
kwargs
|
可选[Any]
|
要传递给可运行对象的附加关键字参数。 |
{}
|
生成
类型 | 描述 |
---|---|
异步迭代器[tuple[int, Union[Output, Exception]]]
|
包含输入索引和可运行对象输出的元组。 |
astream_log async
¶
astream_log(
input: Any,
config: Optional[RunnableConfig] = None,
*,
diff: bool = True,
with_streamed_output_list: bool = True,
include_names: Optional[Sequence[str]] = None,
include_types: Optional[Sequence[str]] = None,
include_tags: Optional[Sequence[str]] = None,
exclude_names: Optional[Sequence[str]] = None,
exclude_types: Optional[Sequence[str]] = None,
exclude_tags: Optional[Sequence[str]] = None,
**kwargs: Any
) -> Union[
AsyncIterator[RunLogPatch], AsyncIterator[RunLog]
]
流式传输可运行对象的所有输出,如回调系统所报告。
这包括 LLM、检索器、工具等的所有内部运行。
输出以 Log 对象的形式流式传输,其中包括描述每次运行状态如何变化的 Jsonpatch 操作列表,以及运行的最终状态。
可以按顺序应用 Jsonpatch 操作来构建状态。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
Any
|
可运行对象的输入。 |
必填 |
config
|
可选[RunnableConfig]
|
可运行对象使用的配置。 |
无
|
diff
|
bool
|
是否在每一步之间或当前状态之间生成差异。 |
True
|
with_streamed_output_list
|
bool
|
是否生成 streamed_output 列表。 |
True
|
include_names
|
可选[Sequence[str]]
|
仅包含具有这些名称的日志。 |
无
|
include_types
|
可选[Sequence[str]]
|
仅包含具有这些类型的日志。 |
无
|
include_tags
|
可选[Sequence[str]]
|
仅包含具有这些标签的日志。 |
无
|
exclude_names
|
可选[Sequence[str]]
|
排除具有这些名称的日志。 |
无
|
exclude_types
|
可选[Sequence[str]]
|
排除具有这些类型的日志。 |
无
|
exclude_tags
|
可选[Sequence[str]]
|
排除具有这些标签的日志。 |
无
|
kwargs
|
Any
|
要传递给可运行对象的附加关键字参数。 |
{}
|
生成
类型 | 描述 |
---|---|
Union[异步迭代器[RunLogPatch], 异步迭代器[RunLog]]
|
一个 RunLogPatch 或 RunLog 对象。 |
transform ¶
transform(
input: Iterator[Input],
config: Optional[RunnableConfig] = None,
**kwargs: Optional[Any]
) -> Iterator[Output]
transform 的默认实现,它会缓冲输入并调用 astream。
如果子类可以在输入仍在生成时开始生成输出,则应覆盖此方法。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
input
|
迭代器[Input]
|
可运行对象的输入迭代器。 |
必填 |
config
|
可选[RunnableConfig]
|
可运行对象使用的配置。默认为 None。 |
无
|
kwargs
|
可选[Any]
|
要传递给可运行对象的附加关键字参数。 |
{}
|
生成
类型 | 描述 |
---|---|
Output
|
可运行对象的输出。 |
atransform async
¶
atransform(
input: AsyncIterator[Input],
config: Optional[RunnableConfig] = None,
**kwargs: Optional[Any]
) -> AsyncIterator[Output]
bind ¶
将参数绑定到可运行对象,返回一个新的可运行对象。
当链中的可运行对象需要一个不在前一个可运行对象的输出中或未包含在用户输入中的参数时,这非常有用。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
kwargs
|
Any
|
要绑定到可运行对象的参数。 |
{}
|
返回
类型 | 描述 |
---|---|
Runnable[Input, Output]
|
绑定了参数的新可运行对象。 |
示例
.. code-block:: python
from langchain_community.chat_models import ChatOllama
from langchain_core.output_parsers import StrOutputParser
llm = ChatOllama(model='llama2')
# Without bind.
chain = (
llm
| StrOutputParser()
)
chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
# Output is 'One two three four five.'
# With bind.
chain = (
llm.bind(stop=["three"])
| StrOutputParser()
)
chain.invoke("Repeat quoted words exactly: 'One two three four five.'")
# Output is 'One two'
with_listeners ¶
with_listeners(
*,
on_start: Optional[
Union[
Callable[[Run], None],
Callable[[Run, RunnableConfig], None],
]
] = None,
on_end: Optional[
Union[
Callable[[Run], None],
Callable[[Run, RunnableConfig], None],
]
] = None,
on_error: Optional[
Union[
Callable[[Run], None],
Callable[[Run, RunnableConfig], None],
]
] = None
) -> Runnable[Input, Output]
将生命周期监听器绑定到可运行对象,返回一个新的可运行对象。
on_start: 在可运行对象开始运行之前调用,带 Run 对象。on_end: 在可运行对象完成运行之后调用,带 Run 对象。on_error: 如果可运行对象抛出错误,则调用,带 Run 对象。
Run 对象包含有关运行的信息,包括其 ID、类型、输入、输出、错误、开始时间、结束时间以及添加到运行的任何标签或元数据。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
on_start
|
可选[Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]]
|
在可运行对象开始运行之前调用。默认为 None。 |
无
|
on_end
|
可选[Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]]
|
在可运行对象完成运行之后调用。默认为 None。 |
无
|
on_error
|
可选[Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]]
|
如果可运行对象抛出错误,则调用。默认为 None。 |
无
|
返回
类型 | 描述 |
---|---|
Runnable[Input, Output]
|
绑定了监听器的新可运行对象。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
from langchain_core.tracers.schemas import Run
import time
def test_runnable(time_to_sleep : int):
time.sleep(time_to_sleep)
def fn_start(run_obj: Run):
print("start_time:", run_obj.start_time)
def fn_end(run_obj: Run):
print("end_time:", run_obj.end_time)
chain = RunnableLambda(test_runnable).with_listeners(
on_start=fn_start,
on_end=fn_end
)
chain.invoke(2)
with_alisteners ¶
with_alisteners(
*,
on_start: Optional[AsyncListener] = None,
on_end: Optional[AsyncListener] = None,
on_error: Optional[AsyncListener] = None
) -> Runnable[Input, Output]
将异步生命周期监听器绑定到可运行对象,返回一个新的可运行对象。
on_start: 在可运行对象开始运行之前异步调用。on_end: 在可运行对象完成运行之后异步调用。on_error: 如果可运行对象抛出错误,则异步调用。
Run 对象包含有关运行的信息,包括其 ID、类型、输入、输出、错误、开始时间、结束时间以及添加到运行的任何标签或元数据。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
on_start
|
可选[AsyncListener]
|
在可运行对象开始运行之前异步调用。默认为 None。 |
无
|
on_end
|
可选[AsyncListener]
|
在可运行对象完成运行之后异步调用。默认为 None。 |
无
|
on_error
|
可选[AsyncListener]
|
如果可运行对象抛出错误,则异步调用。默认为 None。 |
无
|
返回
类型 | 描述 |
---|---|
Runnable[Input, Output]
|
绑定了监听器的新可运行对象。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda, Runnable
from datetime import datetime, timezone
import time
import asyncio
def format_t(timestamp: float) -> str:
return datetime.fromtimestamp(timestamp, tz=timezone.utc).isoformat()
async def test_runnable(time_to_sleep : int):
print(f"Runnable[{time_to_sleep}s]: starts at {format_t(time.time())}")
await asyncio.sleep(time_to_sleep)
print(f"Runnable[{time_to_sleep}s]: ends at {format_t(time.time())}")
async def fn_start(run_obj : Runnable):
print(f"on start callback starts at {format_t(time.time())}")
await asyncio.sleep(3)
print(f"on start callback ends at {format_t(time.time())}")
async def fn_end(run_obj : Runnable):
print(f"on end callback starts at {format_t(time.time())}")
await asyncio.sleep(2)
print(f"on end callback ends at {format_t(time.time())}")
runnable = RunnableLambda(test_runnable).with_alisteners(
on_start=fn_start,
on_end=fn_end
)
async def concurrent_runs():
await asyncio.gather(runnable.ainvoke(2), runnable.ainvoke(3))
asyncio.run(concurrent_runs())
Result:
on start callback starts at 2025-03-01T07:05:22.875378+00:00
on start callback starts at 2025-03-01T07:05:22.875495+00:00
on start callback ends at 2025-03-01T07:05:25.878862+00:00
on start callback ends at 2025-03-01T07:05:25.878947+00:00
Runnable[2s]: starts at 2025-03-01T07:05:25.879392+00:00
Runnable[3s]: starts at 2025-03-01T07:05:25.879804+00:00
Runnable[2s]: ends at 2025-03-01T07:05:27.881998+00:00
on end callback starts at 2025-03-01T07:05:27.882360+00:00
Runnable[3s]: ends at 2025-03-01T07:05:28.881737+00:00
on end callback starts at 2025-03-01T07:05:28.882428+00:00
on end callback ends at 2025-03-01T07:05:29.883893+00:00
on end callback ends at 2025-03-01T07:05:30.884831+00:00
with_types ¶
with_retry ¶
with_retry(
*,
retry_if_exception_type: tuple[
type[BaseException], ...
] = (Exception,),
wait_exponential_jitter: bool = True,
exponential_jitter_params: Optional[
ExponentialJitterParams
] = None,
stop_after_attempt: int = 3
) -> Runnable[Input, Output]
创建一个新的可运行对象,在出现异常时重试原始可运行对象。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
retry_if_exception_type
|
tuple[type[BaseException], ...]
|
要重试的异常类型元组。默认为 (Exception,)。 |
(Exception,)
|
wait_exponential_jitter
|
bool
|
是否在重试之间的等待时间中添加抖动。默认为 True。 |
True
|
stop_after_attempt
|
int
|
放弃前的最大尝试次数。默认为 3。 |
3
|
exponential_jitter_params
|
可选[ExponentialJitterParams]
|
|
无
|
返回
类型 | 描述 |
---|---|
Runnable[Input, Output]
|
一个新的可运行对象,在出现异常时重试原始可运行对象。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
count = 0
def _lambda(x: int) -> None:
global count
count = count + 1
if x == 1:
raise ValueError("x is 1")
else:
pass
runnable = RunnableLambda(_lambda)
try:
runnable.with_retry(
stop_after_attempt=2,
retry_if_exception_type=(ValueError,),
).invoke(1)
except ValueError:
pass
assert (count == 2)
map ¶
返回一个新的可运行对象,它将输入列表映射到输出列表。
使用每个输入调用 invoke()。
返回
类型 | 描述 |
---|---|
Runnable[list[Input], list[Output]]
|
一个新的可运行对象,它将输入列表映射到输出列表。 |
示例
.. code-block:: python
from langchain_core.runnables import RunnableLambda
def _lambda(x: int) -> int:
return x + 1
runnable = RunnableLambda(_lambda)
print(runnable.map().invoke([1, 2, 3])) # [2, 3, 4]
with_fallbacks ¶
with_fallbacks(
fallbacks: Sequence[Runnable[Input, Output]],
*,
exceptions_to_handle: tuple[
type[BaseException], ...
] = (Exception,),
exception_key: Optional[str] = None
) -> RunnableWithFallbacks[Input, Output]
为可运行对象添加回退,返回一个新的可运行对象。
新的可运行对象将在失败时尝试原始可运行对象,然后按顺序尝试每个回退。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
fallbacks
|
Sequence[Runnable[Input, Output]]
|
如果原始可运行对象失败,要尝试的可运行对象序列。 |
必填 |
exceptions_to_handle
|
tuple[type[BaseException], ...]
|
要处理的异常类型元组。默认为 (Exception,)。 |
(Exception,)
|
exception_key
|
可选[str]
|
如果指定字符串,则处理的异常将作为输入的一部分在指定键下传递给回退。如果为 None,则异常不会传递给回退。如果使用,则基础可运行对象及其回退必须接受字典作为输入。默认为 None。 |
无
|
返回
类型 | 描述 |
---|---|
RunnableWithFallbacks[Input, Output]
|
一个新的可运行对象,它将在失败时尝试原始可运行对象,然后按顺序尝试每个 |
RunnableWithFallbacks[Input, Output]
|
回退。 |
示例
.. code-block:: python
from typing import Iterator
from langchain_core.runnables import RunnableGenerator
def _generate_immediate_error(input: Iterator) -> Iterator[str]:
raise ValueError()
yield ""
def _generate(input: Iterator) -> Iterator[str]:
yield from "foo bar"
runnable = RunnableGenerator(_generate_immediate_error).with_fallbacks(
[RunnableGenerator(_generate)]
)
print(''.join(runnable.stream({}))) #foo bar
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
fallbacks
|
Sequence[Runnable[Input, Output]]
|
如果原始可运行对象失败,要尝试的可运行对象序列。 |
必填 |
exceptions_to_handle
|
tuple[type[BaseException], ...]
|
要处理的异常类型元组。 |
(Exception,)
|
exception_key
|
可选[str]
|
如果指定字符串,则处理的异常将作为输入的一部分在指定键下传递给回退。如果为 None,则异常不会传递给回退。如果使用,则基础可运行对象及其回退必须接受字典作为输入。 |
无
|
返回
类型 | 描述 |
---|---|
RunnableWithFallbacks[Input, Output]
|
一个新的可运行对象,它将在失败时尝试原始可运行对象,然后按顺序尝试每个 |
RunnableWithFallbacks[Input, Output]
|
回退。 |
as_tool ¶
as_tool(
args_schema: Optional[type[BaseModel]] = None,
*,
name: Optional[str] = None,
description: Optional[str] = None,
arg_types: Optional[dict[str, type]] = None
) -> BaseTool
从可运行对象创建 BaseTool。
as_tool
将从可运行对象实例化一个具有名称、描述和 args_schema
的 BaseTool。在可能的情况下,模式是从 runnable.get_input_schema
推断的。或者(例如,如果可运行对象接受字典作为输入且未对特定字典键进行类型化),则可以直接使用 args_schema
指定模式。您还可以传递 arg_types
以仅指定所需参数及其类型。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
args_schema
|
可选[type[BaseModel]]
|
工具的模式。默认为 None。 |
无
|
name
|
可选[str]
|
工具的名称。默认为 None。 |
无
|
description
|
可选[str]
|
工具的描述。默认为 None。 |
无
|
arg_types
|
可选[dict[str, type]]
|
参数名称到类型的字典。默认为 None。 |
无
|
返回
类型 | 描述 |
---|---|
BaseTool
|
一个 BaseTool 实例。 |
类型化字典输入
.. code-block:: python
from typing_extensions import TypedDict
from langchain_core.runnables import RunnableLambda
class Args(TypedDict):
a: int
b: list[int]
def f(x: Args) -> str:
return str(x["a"] * max(x["b"]))
runnable = RunnableLambda(f)
as_tool = runnable.as_tool()
as_tool.invoke({"a": 3, "b": [1, 2]})
dict
输入,通过 args_schema
指定模式
.. code-block:: python
from typing import Any
from pydantic import BaseModel, Field
from langchain_core.runnables import RunnableLambda
def f(x: dict[str, Any]) -> str:
return str(x["a"] * max(x["b"]))
class FSchema(BaseModel):
"""Apply a function to an integer and list of integers."""
a: int = Field(..., description="Integer")
b: list[int] = Field(..., description="List of ints")
runnable = RunnableLambda(f)
as_tool = runnable.as_tool(FSchema)
as_tool.invoke({"a": 3, "b": [1, 2]})
dict
输入,通过 arg_types
指定模式
.. code-block:: python
from typing import Any
from langchain_core.runnables import RunnableLambda
def f(x: dict[str, Any]) -> str:
return str(x["a"] * max(x["b"]))
runnable = RunnableLambda(f)
as_tool = runnable.as_tool(arg_types={"a": int, "b": list[int]})
as_tool.invoke({"a": 3, "b": [1, 2]})
字符串输入
.. code-block:: python
from langchain_core.runnables import RunnableLambda
def f(x: str) -> str:
return x + "a"
def g(x: str) -> str:
return x + "z"
runnable = RunnableLambda(f) | g
as_tool = runnable.as_tool()
as_tool.invoke("b")
.. versionadded:: 0.2.14