Python SDK 参考¶
LangGraph 客户端实现连接到 LangGraph API。
此模块提供异步(get_client(url="http://localhost:2024")) 或 LangGraphClient)和同步(get_sync_client(url="http://localhost:2024")) 或 SyncLanggraphClient)客户端,用于与 LangGraph API 的核心资源(如助手、线程、运行和定时任务)以及其持久文档存储进行交互。
类
名称 | 描述 |
---|---|
LangGraphClient |
LangGraph API 的顶层客户端。 |
HttpClient |
处理对 LangGraph API 的异步请求。 |
AssistantsClient |
用于在 LangGraph 中管理助手的客户端。 |
ThreadsClient |
用于在 LangGraph 中管理线程的客户端。 |
RunsClient |
用于在 LangGraph 中管理运行的客户端。 |
CronClient |
用于在 LangGraph 中管理重复运行(定时任务)的客户端。 |
StoreClient |
用于与图的共享存储交互的客户端。 |
SyncLangGraphClient |
用于与 LangGraph API 交互的同步客户端。 |
SyncHttpClient |
处理对 LangGraph API 的同步请求。 |
SyncAssistantsClient |
用于在 LangGraph 中同步管理助手的客户端。 |
SyncThreadsClient |
用于在 LangGraph 中管理线程的同步客户端。 |
SyncRunsClient |
用于在 LangGraph 中管理运行的同步客户端。 |
SyncCronClient |
用于在 LangGraph 中管理定时任务的同步客户端。 |
SyncStoreClient |
用于对键值存储进行同步操作的客户端。 |
函数
名称 | 描述 |
---|---|
get_client |
获取 LangGraphClient 实例。 |
get_sync_client |
获取同步 LangGraphClient 实例。 |
LangGraphClient ¶
LangGraph API 的顶层客户端。
属性
名称 | 类型 | 描述 |
---|---|---|
assistants |
管理图的版本化配置。 |
|
threads |
处理(可能)多轮交互,例如对话线程。 |
|
runs |
控制图的单个调用。 |
|
crons |
管理计划操作。 |
|
store |
与持久的共享数据存储接口。 |
HttpClient ¶
处理对 LangGraph API 的异步请求。
在提供的 httpx 客户端之上添加了额外的错误消息和内容处理。
属性
名称 | 类型 | 描述 |
---|---|---|
client |
AsyncClient
|
底层 HTTPX 异步客户端。 |
方法
名称 | 描述 |
---|---|
get |
发送 GET 请求。 |
post |
发送 POST 请求。 |
put |
发送 PUT 请求。 |
patch |
发送 PATCH 请求。 |
delete |
发送 DELETE 请求。 |
stream |
使用 SSE 流式传输结果。 |
get async
¶
get(
path: str,
*,
params: Optional[QueryParamTypes] = None,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 GET 请求。
post async
¶
post(
path: str,
*,
json: Optional[dict],
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 POST 请求。
put async
¶
put(
path: str,
*,
json: dict,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 PUT 请求。
patch async
¶
patch(
path: str,
*,
json: dict,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 PATCH 请求。
AssistantsClient ¶
用于在 LangGraph 中管理助手的客户端。
此类提供与助手交互的方法,助手是图的版本化配置。
示例
方法
名称 | 描述 |
---|---|
get |
通过 ID 获取助手。 |
get_graph |
通过 ID 获取助手的图。 |
get_schemas |
通过 ID 获取助手的模式。 |
get_subgraphs |
通过 ID 获取助手的模式。 |
create |
创建新助手。 |
update |
更新助手。 |
delete |
删除助手。 |
search |
搜索助手。 |
get_versions |
列出助手的所有版本。 |
set_latest |
更改助手的版本。 |
get async
¶
通过 ID 获取助手。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要获取的助手的 ID。 |
必需 |
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Assistant |
Assistant
|
助手对象。 |
用法示例
----------------------------------------------------
{
'assistant_id': 'my_assistant_id',
'graph_id': 'agent',
'created_at': '2024-06-25T17:10:33.109781+00:00',
'updated_at': '2024-06-25T17:10:33.109781+00:00',
'config': {},
'metadata': {'created_by': 'system'},
'version': 1,
'name': 'my_assistant'
}
get_graph async
¶
get_graph(
assistant_id: str,
*,
xray: Union[int, bool] = False,
headers: Optional[dict[str, str]] = None
) -> dict[str, list[dict[str, Any]]]
通过 ID 获取助手的图。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要获取其图的助手的 ID。 |
必需 |
xray
|
联合[int, bool]
|
包含子图的图表示。如果提供了整数值,则只包含深度小于或等于该值的子图。 |
False
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Graph |
dict[str, list[dict[str, Any]]]
|
助手的图信息,JSON 格式。 |
用法示例
client = get_client(url="http://localhost:2024")
graph_info = await client.assistants.get_graph(
assistant_id="my_assistant_id"
)
print(graph_info)
--------------------------------------------------------------------------------------------------------------------------
{
'nodes':
[
{'id': '__start__', 'type': 'schema', 'data': '__start__'},
{'id': '__end__', 'type': 'schema', 'data': '__end__'},
{'id': 'agent','type': 'runnable','data': {'id': ['langgraph', 'utils', 'RunnableCallable'],'name': 'agent'}},
],
'edges':
[
{'source': '__start__', 'target': 'agent'},
{'source': 'agent','target': '__end__'}
]
}
get_schemas async
¶
通过 ID 获取助手的模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要获取其模式的助手的 ID。 |
必需 |
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
GraphSchema |
GraphSchema
|
助手的图模式。 |
用法示例
client = get_client(url="http://localhost:2024")
schema = await client.assistants.get_schemas(
assistant_id="my_assistant_id"
)
print(schema)
----------------------------------------------------------------------------------------------------------------------------
{
'graph_id': 'agent',
'state_schema':
{
'title': 'LangGraphInput',
'$ref': '#/definitions/AgentState',
'definitions':
{
'BaseMessage':
{
'title': 'BaseMessage',
'description': 'Base abstract Message class. Messages are the inputs and outputs of ChatModels.',
'type': 'object',
'properties':
{
'content':
{
'title': 'Content',
'anyOf': [
{'type': 'string'},
{'type': 'array','items': {'anyOf': [{'type': 'string'}, {'type': 'object'}]}}
]
},
'additional_kwargs':
{
'title': 'Additional Kwargs',
'type': 'object'
},
'response_metadata':
{
'title': 'Response Metadata',
'type': 'object'
},
'type':
{
'title': 'Type',
'type': 'string'
},
'name':
{
'title': 'Name',
'type': 'string'
},
'id':
{
'title': 'Id',
'type': 'string'
}
},
'required': ['content', 'type']
},
'AgentState':
{
'title': 'AgentState',
'type': 'object',
'properties':
{
'messages':
{
'title': 'Messages',
'type': 'array',
'items': {'$ref': '#/definitions/BaseMessage'}
}
},
'required': ['messages']
}
}
},
'config_schema':
{
'title': 'Configurable',
'type': 'object',
'properties':
{
'model_name':
{
'title': 'Model Name',
'enum': ['anthropic', 'openai'],
'type': 'string'
}
}
}
}
get_subgraphs async
¶
create async
¶
create(
graph_id: Optional[str],
config: Optional[Config] = None,
*,
metadata: Json = None,
assistant_id: Optional[str] = None,
if_exists: Optional[OnConflictBehavior] = None,
name: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
description: Optional[str] = None
) -> Assistant
创建新助手。
当图是可配置的且您希望基于不同配置创建不同助手时很有用。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
graph_id
|
可选[str]
|
助手应使用的图的 ID。图 ID 通常在 langgraph.json 配置中设置。 |
必需 |
config
|
可选[Config]
|
用于图的配置。 |
无
|
metadata
|
Json
|
要添加到助手的元数据。 |
无
|
assistant_id
|
可选[str]
|
要使用的助手 ID,如果未提供,将默认为随机 UUID。 |
无
|
if_exists
|
可选[OnConflictBehavior]
|
如何处理重复创建。默认在底层为 'raise'。必须是 'raise'(如果重复则抛出错误)或 'do_nothing'(返回现有助手)。 |
无
|
name
|
可选[str]
|
助手的名称。默认在底层为 'Untitled'。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
description
|
可选[str]
|
助手的可选描述。 description 字段适用于 langgraph-api server 版本 >=0.0.45 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Assistant |
Assistant
|
创建的助手。 |
update async
¶
update(
assistant_id: str,
*,
graph_id: Optional[str] = None,
config: Optional[Config] = None,
metadata: Json = None,
name: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
description: Optional[str] = None
) -> Assistant
更新助手。
使用此方法指向不同的图、更新配置或更改助手的元数据。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要更新的助手。 |
必需 |
graph_id
|
可选[str]
|
助手应使用的图的 ID。图 ID 通常在 langgraph.json 配置中设置。如果为 None,助手将继续指向相同的图。 |
无
|
config
|
可选[Config]
|
用于图的配置。 |
无
|
metadata
|
Json
|
要与现有助手元数据合并的元数据。 |
无
|
name
|
可选[str]
|
助手的新名称。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
description
|
可选[str]
|
助手的可选描述。 description 字段适用于 langgraph-api server 版本 >=0.0.45 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Assistant |
Assistant
|
已更新的助手。 |
delete async
¶
search async
¶
search(
*,
metadata: Json = None,
graph_id: Optional[str] = None,
limit: int = 10,
offset: int = 0,
sort_by: Optional[AssistantSortBy] = None,
sort_order: Optional[SortOrder] = None,
headers: Optional[dict[str, str]] = None
) -> list[Assistant]
搜索助手。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
metadata
|
Json
|
要过滤的元数据。每个键值对的精确匹配过滤。 |
无
|
graph_id
|
可选[str]
|
要过滤的图的 ID。图 ID 通常在 langgraph.json 配置中设置。 |
无
|
limit
|
int
|
要返回的最大结果数。 |
10
|
offset
|
int
|
要跳过的结果数。 |
0
|
sort_by
|
可选[AssistantSortBy]
|
要排序的字段。 |
无
|
sort_order
|
可选[SortOrder]
|
排序顺序。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Assistant]
|
list[Assistant]: 助手列表。 |
get_versions async
¶
get_versions(
assistant_id: str,
metadata: Json = None,
limit: int = 10,
offset: int = 0,
*,
headers: Optional[dict[str, str]] = None
) -> list[AssistantVersion]
线程维护图在多次交互/调用(又称运行)中的状态。它累积并持久化图的状态,允许在图的不同调用之间保持连续性。
用于在 LangGraph 中管理线程的客户端。
通过 ID 获取线程。
示例
方法
名称 | 描述 |
---|---|
get |
创建新线程。 |
create |
更新线程。 |
update |
删除线程。 |
delete |
搜索线程。 |
search |
copy |
复制线程。 |
get_state |
获取线程状态。 |
update_state |
更新线程状态。 |
get_history |
获取线程状态历史。 |
|
thread_id
要添加到线程的元数据。
create(
*,
metadata: Json = None,
thread_id: Optional[str] = None,
if_exists: Optional[OnConflictBehavior] = None,
supersteps: Optional[
Sequence[dict[str, Sequence[dict[str, Any]]]]
] = None,
graph_id: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Thread
更新线程。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
metadata
|
Json
|
线程 ID。如果为 None,ID 将是随机生成的 UUID。 |
无
|
要获取的线程 ID。
|
可选[str]
|
如何处理重复创建。默认在底层为 'raise'。必须是 'raise'(如果重复则抛出错误)或 'do_nothing'(返回现有线程)。 |
无
|
if_exists
|
可选[OnConflictBehavior]
|
supersteps |
无
|
可选[序列[dict[str, 序列[dict[str, Any]]]]]
|
创建线程时应用超步列表,每个超步包含一系列更新。每次更新都有
|
与线程关联的可选图 ID。 |
无
|
graph_id
|
可选[str]
|
创建的线程。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
线程对象。 |
线程对象。
|
|
要更新的线程 ID。
update(
thread_id: str,
*,
metadata: dict[str, Any],
headers: Optional[dict[str, str]] = None
) -> Thread
要删除的线程 ID。
要过滤的线程元数据。
search(
*,
metadata: Json = None,
values: Json = None,
status: Optional[ThreadStatus] = None,
limit: int = 10,
offset: int = 0,
sort_by: Optional[ThreadSortBy] = None,
sort_order: Optional[SortOrder] = None,
headers: Optional[dict[str, str]] = None
) -> list[Thread]
copy
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
metadata
|
Json
|
values |
无
|
要过滤的状态值。
|
Json
|
status |
无
|
可选[ThreadStatus]
|
要过滤的线程状态。必须是 'idle'、'busy'、'interrupted' 或 'error' 之一。
|
要返回的线程数量限制。 |
无
|
limit
|
int
|
在线程表中开始搜索的偏移量。 |
10
|
offset
|
int
|
0
|
|
sort_by
|
排序字段。
|
排序顺序。 |
无
|
sort_order
|
可选[SortOrder]
|
无
|
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Thread]: 匹配搜索参数的线程列表。
|
|
要复制的线程 ID。
要获取状态的线程 ID。
get_state(
thread_id: str,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
*,
subgraphs: bool = False,
headers: Optional[dict[str, str]] = None
) -> ThreadState
update_state
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
checkpoint |
必需 |
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_id |
无
|
(已弃用) 要获取状态的检查点 ID。
|
可选[str]
|
subgraphs |
无
|
包含子图状态。
|
bool
|
ThreadState |
False
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
线程的状态。 |
线程的状态。
|
|
用法示例
client = get_client(url="http://localhost:2024)
thread_state = await client.threads.get_state(
thread_id="my_thread_id",
checkpoint_id="my_checkpoint_id"
)
print(thread_state)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
'values': {
'messages': [
{
'content': 'how are you?',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10',
'example': False
},
{
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'additional_kwargs': {},
'response_metadata': {},
'type': 'ai',
'name': None,
'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b',
'example': False,
'tool_calls': [],
'invalid_tool_calls': [],
'usage_metadata': None
}
]
},
'next': [],
'checkpoint':
{
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-e6fb-67b1-8001-abd5184439d1'
}
'metadata':
{
'step': 1,
'run_id': '1ef4a9b8-d7da-679a-a45a-872054341df2',
'source': 'loop',
'writes':
{
'agent':
{
'messages': [
{
'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b',
'name': None,
'type': 'ai',
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'example': False,
'tool_calls': [],
'usage_metadata': None,
'additional_kwargs': {},
'response_metadata': {},
'invalid_tool_calls': []
}
]
}
},
'user_id': None,
'graph_id': 'agent',
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'created_by': 'system',
'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'},
'created_at': '2024-07-25T15:35:44.184703+00:00',
'parent_config':
{
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-d80d-6fa7-8000-9300467fad0f'
}
}
要更新的线程 ID。
update_state(
thread_id: str,
values: Optional[Union[dict, Sequence[dict]]],
*,
as_node: Optional[str] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> ThreadUpdateStateResponse
get_history
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
必需 | |
要过滤的状态值。
|
用于更新状态的值。
|
as_node |
必需 |
更新状态,就好像这个节点刚刚执行过一样。
|
可选[str]
|
要更新状态的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
(已弃用) 要更新状态的检查点 ID。 |
无
|
(已弃用) 要获取状态的检查点 ID。
|
可选[str]
|
ThreadUpdateStateResponse |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
更新线程状态后的响应。 |
更新线程状态后的响应。
|
|
用法示例
client = get_client(url="http://localhost:2024)
response = await client.threads.update_state(
thread_id="my_thread_id",
values={"messages":[{"role": "user", "content": "hello!"}]},
as_node="my_node",
)
print(response)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
'checkpoint': {
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-e6fb-67b1-8001-abd5184439d1',
'checkpoint_map': {}
}
}
要获取状态历史的线程 ID。
get_history(
thread_id: str,
*,
limit: int = 10,
before: Optional[str | Checkpoint] = None,
metadata: Optional[dict] = None,
checkpoint: Optional[Checkpoint] = None,
headers: Optional[dict[str, str]] = None
) -> list[ThreadState]
运行是助手的单个调用,带有可选的输入、配置和元数据。此客户端管理运行,可以是有状态的(在线程上)或无状态的。
用于在 LangGraph 中管理运行的客户端。
创建运行并流式传输结果。
示例
方法
名称 | 描述 |
---|---|
stream |
创建后台运行。 |
create |
create_batch |
创建一批无状态后台运行。 |
wait |
创建运行,等待其完成并返回最终状态。 |
list |
列出运行。 |
获取运行。 |
get |
cancel |
join |
cancel |
阻塞直到运行完成。返回线程的最终状态。 |
join_stream |
实时流式传输运行输出,直到运行完成。 |
删除运行。 |
delete |
|
要分配给线程的线程 ID。如果为 None,将创建无状态运行。
stream(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
stream_mode: Union[
StreamMode, Sequence[StreamMode]
] = "values",
stream_subgraphs: bool = False,
stream_resumable: bool = False,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
feedback_keys: Optional[Sequence[str]] = None,
on_disconnect: Optional[DisconnectMode] = None,
on_completion: Optional[OnCompletionBehavior] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
if_not_exists: Optional[IfNotExists] = None,
after_seconds: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> AsyncIterator[StreamPart]
创建后台运行。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要从中流式传输的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
input |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
stream_mode |
无
|
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。
|
'values' |
stream_subgraphs
|
是否流式传输子图的输出。
|
bool
|
stream_resumable |
False
|
流是否可恢复。如果为 True,即使断开连接后,也可以完全恢复和重播流。
|
bool
|
分配给运行的元数据。 |
False
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
可选[序列[str]]
|
分配给运行的反馈键。
|
on_disconnect |
无
|
可选[DisconnectMode]
|
要使用的断开连接模式。必须是 'cancel' 或 'continue' 之一。
|
on_completion |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
无
|
返回
类型 | 描述 |
---|---|
AsyncIterator[StreamPart]: 流结果的异步迭代器。
|
|
用法示例
client = get_client(url="http://localhost:2024)
async for chunk in client.runs.stream(
thread_id=None,
assistant_id="agent",
input={"messages": [{"role": "user", "content": "how are you?"}]},
stream_mode=["values","debug"],
metadata={"name":"my_run"},
config={"configurable": {"model_name": "anthropic"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
feedback_keys=["my_feedback_key_1","my_feedback_key_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
):
print(chunk)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StreamPart(event='metadata', data={'run_id': '1ef4a9b8-d7da-679a-a45a-872054341df2'})
StreamPart(event='values', data={'messages': [{'content': 'how are you?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10', 'example': False}]})
StreamPart(event='values', data={'messages': [{'content': 'how are you?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10', 'example': False}, {'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]})
StreamPart(event='end', data=None)
运行创建时可选的回调。
create(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
stream_mode: Union[
StreamMode, Sequence[StreamMode]
] = "values",
stream_subgraphs: bool = False,
stream_resumable: bool = False,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
if_not_exists: Optional[IfNotExists] = None,
on_completion: Optional[OnCompletionBehavior] = None,
after_seconds: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> Run
create_batch
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要从中流式传输的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
input |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
stream_mode |
无
|
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。
|
'values' |
stream_subgraphs
|
是否流式传输子图的输出。
|
bool
|
stream_resumable |
False
|
流是否可恢复。如果为 True,即使断开连接后,也可以完全恢复和重播流。
|
bool
|
分配给运行的元数据。 |
False
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
Run |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
background_run = await client.runs.create(
thread_id="my_thread_id",
assistant_id="my_assistant_id",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
print(background_run)
--------------------------------------------------------------------------------
{
'run_id': 'my_run_id',
'thread_id': 'my_thread_id',
'assistant_id': 'my_assistant_id',
'created_at': '2024-07-25T15:35:42.598503+00:00',
'updated_at': '2024-07-25T15:35:42.598503+00:00',
'metadata': {},
'status': 'pending',
'kwargs':
{
'input':
{
'messages': [
{
'role': 'user',
'content': 'how are you?'
}
]
},
'config':
{
'metadata':
{
'created_by': 'system'
},
'configurable':
{
'run_id': 'my_run_id',
'user_id': None,
'graph_id': 'agent',
'thread_id': 'my_thread_id',
'checkpoint_id': None,
'model_name': "openai",
'assistant_id': 'my_assistant_id'
}
},
'webhook': "https://my.fake.webhook.com",
'temporary': False,
'stream_mode': ['values'],
'feedback_keys': None,
'interrupt_after': ["node_to_stop_after_1","node_to_stop_after_2"],
'interrupt_before': ["node_to_stop_before_1","node_to_stop_before_2"]
},
'multitask_strategy': 'interrupt'
}
要在其上创建运行的线程 ID。如果为 None,将创建无状态运行。
wait(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
webhook: Optional[str] = None,
on_disconnect: Optional[DisconnectMode] = None,
on_completion: Optional[OnCompletionBehavior] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
if_not_exists: Optional[IfNotExists] = None,
after_seconds: Optional[int] = None,
raise_error: bool = True,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> Union[list[dict], dict[str, Any]]
list
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要运行的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
必需 | |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
stream_mode |
无
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[DisconnectMode]
|
要使用的断开连接模式。必须是 'cancel' 或 'continue' 之一。
|
on_completion |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
Run |
无
|
返回
类型 | 描述 |
---|---|
Union[list[dict], dict[str, Any]]: 运行的输出。
|
|
用法示例
client = get_client(url="http://localhost:2024")
final_state_of_run = await client.runs.wait(
thread_id=None,
assistant_id="agent",
input={"messages": [{"role": "user", "content": "how are you?"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "anthropic"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
print(final_state_of_run)
-------------------------------------------------------------------------------------------------------------------------------------------
{
'messages': [
{
'content': 'how are you?',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': 'f51a862c-62fe-4866-863b-b0863e8ad78a',
'example': False
},
{
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'additional_kwargs': {},
'response_metadata': {},
'type': 'ai',
'name': None,
'id': 'run-bf1cd3c6-768f-4c16-b62d-ba6f17ad8b36',
'example': False,
'tool_calls': [],
'invalid_tool_calls': [],
'usage_metadata': None
}
]
}
要列出运行的线程 ID。
list(
thread_id: str,
*,
limit: int = 10,
offset: int = 0,
status: Optional[RunStatus] = None,
headers: Optional[dict[str, str]] = None
) -> list[Run]
要获取的线程 ID。
要取消的线程 ID。
cancel(
thread_id: str,
run_id: str,
*,
wait: bool = False,
action: CancelAction = "interrupt",
headers: Optional[dict[str, str]] = None
) -> None
要加入的线程 ID。
实时流式传输运行输出,直到运行完成。输出不缓冲,因此在此调用之前产生的任何输出都不会在此处接收。
join_stream(
thread_id: str,
run_id: str,
*,
cancel_on_disconnect: bool = False,
stream_mode: Optional[
Union[StreamMode, Sequence[StreamMode]]
] = None,
headers: Optional[dict[str, str]] = None,
last_event_id: Optional[str] = None
) -> AsyncIterator[StreamPart]
cancel_on_disconnect
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
要加入的运行 ID。 |
必需 |
要获取的运行 ID。
|
str
|
dict |
必需 |
流断开连接时是否取消运行。
|
bool
|
可选[联合[StreamMode, 序列[StreamMode]]] |
False
|
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。必须是创建运行时传递的流模式的子集。后台运行默认包含所有流模式的并集。
|
|
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
AsyncIterator[StreamPart]: 流结果的异步迭代器。
|
无 |
要删除的线程 ID。
运行是助手对可选输入和配置的单次调用。此客户端允许安排定期运行以自动发生。
用于在 LangGraph 中管理重复运行(定时任务)的客户端。
功能可用性
用法示例
cron 客户端功能并非所有许可证都支持。请查阅相关许可证文档以获取最新功能可用性详情。
create_for_thread
方法
名称 | 描述 |
---|---|
为线程创建定时任务。 |
创建定时运行。 |
create |
删除定时任务。 |
delete |
获取定时任务列表。 |
search |
|
要运行定时任务的线程 ID。
create_for_thread(
thread_id: str,
assistant_id: str,
*,
schedule: str,
input: Optional[dict] = None,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, list[str]]
] = None,
interrupt_after: Optional[Union[All, list[str]]] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Run
创建定时运行。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
用于定时任务的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
schedule |
必需 |
执行此任务的 cron 调度。
|
str
|
分配给定时任务运行的元数据。 |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
metadata
|
按元数据键值对过滤状态。
|
无
|
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
定时任务运行。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
定时任务运行。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
可选[str]
|
if_not_exists |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
client = get_client(url="http://localhost:2024")
cron_run = await client.crons.create_for_thread(
thread_id="my-thread-id",
assistant_id="agent",
schedule="27 15 * * *",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
delete async
¶
create(
assistant_id: str,
*,
schedule: str,
input: Optional[dict] = None,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, list[str]]
] = None,
interrupt_after: Optional[Union[All, list[str]]] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Run
删除定时任务。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
schedule |
必需 |
执行此任务的 cron 调度。
|
str
|
分配给定时任务运行的元数据。 |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
metadata
|
按元数据键值对过滤状态。
|
无
|
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
定时任务运行。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
定时任务运行。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
可选[str]
|
if_not_exists |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
client = get_client(url="http://localhost:2024")
cron_run = client.crons.create(
assistant_id="agent",
schedule="27 15 * * *",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
cron_id
要搜索的助手 ID 或图名称。
search(
*,
assistant_id: Optional[str] = None,
thread_id: Optional[str] = None,
limit: int = 10,
offset: int = 0,
headers: Optional[dict[str, str]] = None
) -> list[Cron]
create_for_thread
async
¶
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
可选[str]
|
要搜索的线程 ID。 |
无
|
要获取的线程 ID。
|
可选[str]
|
无
|
|
limit
|
int
|
要返回的最大结果数。 |
10
|
offset
|
int
|
要跳过的结果数。 |
0
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Cron]: 搜索返回的定时任务列表。
|
|
用法示例
client = get_client(url="http://localhost:2024")
cron_jobs = await client.crons.search(
assistant_id="my_assistant_id",
thread_id="my_thread_id",
limit=5,
offset=5,
)
print(cron_jobs)
----------------------------------------------------------
[
{
'cron_id': '1ef3cefa-4c09-6926-96d0-3dc97fd5e39b',
'assistant_id': 'my_assistant_id',
'thread_id': 'my_thread_id',
'user_id': None,
'payload':
{
'input': {'start_time': ''},
'schedule': '4 * * * *',
'assistant_id': 'my_assistant_id'
},
'schedule': '4 * * * *',
'next_run_date': '2024-07-25T17:04:00+00:00',
'end_time': None,
'created_at': '2024-07-08T06:02:23.073257+00:00',
'updated_at': '2024-07-08T06:02:23.073257+00:00'
}
]
存储提供了一个键值存储系统,用于在图执行期间持久化数据,从而允许跨线程进行有状态操作和数据共享。
用于与图的共享存储交互的客户端。
put_item
示例
方法
名称 | 描述 |
---|---|
存储或更新项目。 |
get_item |
检索单个项目。 |
delete_item |
删除项目。 |
search_items |
在命名空间前缀内搜索项目。 |
list_namespaces |
列出带可选匹配条件的命名空间。 |
|
序列[str]
put_item(
namespace: Sequence[str],
/,
key: str,
value: dict[str, Any],
index: Optional[
Union[Literal[False], list[str]]
] = None,
ttl: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
) -> None
get_item
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
namespace
|
表示命名空间路径的字符串列表。
|
key |
必需 |
命名空间内项目的唯一标识符。
|
str
|
value |
必需 |
包含项目数据的字典。
|
要与现有线程元数据合并的元数据。
|
index |
必需 |
可选[联合[字面量[False], list[str]]]
|
控制搜索索引 - None(使用默认值)、False(禁用)或要索引的字段路径列表。
|
ttl |
无
|
项目可选的存活时间(分钟),或 None 表示永不过期。
|
运行开始前等待的秒数。用于安排未来的运行。
|
|
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
无
|
无 |
项目的唯一标识符。
get_item(
namespace: Sequence[str],
/,
key: str,
*,
refresh_ttl: Optional[bool] = None,
headers: Optional[dict[str, str]] = None,
) -> Item
delete_item
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
命名空间内项目的唯一标识符。
|
str
|
表示命名空间路径的可选字符串列表。 |
必需 |
namespace
|
表示命名空间路径的字符串列表。
|
refresh_ttl |
必需 |
是否在此读取操作时刷新 TTL。如果为 None,则使用存储的默认行为。
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
Item |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
检索到的项目。 |
检索到的项目。
|
|
headers |
检索到的项目。
|
可选的自定义请求头。 |
search_items async
¶
namespace_prefix
search_items(
namespace_prefix: Sequence[str],
/,
filter: Optional[dict[str, Any]] = None,
limit: int = 10,
offset: int = 0,
query: Optional[str] = None,
refresh_ttl: Optional[bool] = None,
headers: Optional[dict[str, str]] = None,
) -> SearchItemsResponse
list_namespaces
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
表示命名空间前缀的字符串列表。
|
表示命名空间路径的字符串列表。
|
filter |
必需 |
可选[dict[str, Any]]
|
可选的键值对字典,用于过滤结果。
|
要返回的最大项目数(默认为 10)。 |
无
|
limit
|
int
|
在返回结果之前要跳过的项目数(默认为 0)。 |
10
|
offset
|
int
|
query |
0
|
自然语言搜索的可选查询。
|
可选[str]
|
是否在此搜索时刷新返回项目的 TTL。如果为 None,则使用存储的默认行为。 |
无
|
是否在此读取操作时刷新 TTL。如果为 None,则使用存储的默认行为。
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
SearchItemsResponse |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Item]: 匹配搜索条件的项目列表。
|
|
用法示例
client = get_client(url="http://localhost:2024")
items = await client.store.search_items(
["documents"],
filter={"author": "John Doe"},
limit=5,
offset=0
)
print(items)
----------------------------------------------------------------
{
"items": [
{
"namespace": ["documents", "user123"],
"key": "item789",
"value": {
"title": "Another Document",
"author": "John Doe"
},
"created_at": "2024-07-30T12:00:00Z",
"updated_at": "2024-07-30T12:00:00Z"
},
# ... additional items ...
]
}
prefix
list_namespaces(
prefix: Optional[list[str]] = None,
suffix: Optional[list[str]] = None,
max_depth: Optional[int] = None,
limit: int = 100,
offset: int = 0,
headers: Optional[dict[str, str]] = None,
) -> ListNamespaceResponse
put_item
async
¶
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
可选[list[str]]
|
表示要过滤命名空间的前缀的可选字符串列表。
|
suffix |
无
|
表示要过滤命名空间的后缀的可选字符串列表。
|
表示要过滤命名空间的前缀的可选字符串列表。
|
max_depth |
无
|
指定要返回的命名空间最大深度的可选整数。
|
运行开始前等待的秒数。用于安排未来的运行。
|
要返回的最大命名空间数(默认为 100)。 |
无
|
limit
|
int
|
在返回结果之前要跳过的命名空间数(默认为 0)。 |
100
|
offset
|
int
|
ListNamespaceResponse |
0
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[list[str]]: 匹配条件的命名空间列表。
|
|
用法示例
client = get_client(url="http://localhost:2024")
namespaces = await client.store.list_namespaces(
prefix=["documents"],
max_depth=3,
limit=10,
offset=0
)
print(namespaces)
----------------------------------------------------------------
[
["documents", "user123", "reports"],
["documents", "user456", "invoices"],
...
]
此类提供对 LangGraph API 端点的同步访问,用于管理助手、线程、运行、定时任务和数据存储。
在底层 httpx 客户端之上提供错误消息和内容处理增强功能,镜像 HttpClient 的接口,但用于同步用法。
处理对 LangGraph API 的同步请求。
Client
属性
名称 | 类型 | 描述 |
---|---|---|
client |
底层 HTTPX 同步客户端。
|
使用 SSE 流式传输请求结果。 |
方法
名称 | 描述 |
---|---|
get |
发送 GET 请求。 |
post |
发送 POST 请求。 |
put |
发送 PUT 请求。 |
patch |
发送 PATCH 请求。 |
delete |
发送 DELETE 请求。 |
stream |
|
post ¶
get(
path: str,
*,
params: Optional[QueryParamTypes] = None,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 GET 请求。
put ¶
post(
path: str,
*,
json: Optional[dict],
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 POST 请求。
patch ¶
put(
path: str,
*,
json: dict,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 PUT 请求。
delete ¶
patch(
path: str,
*,
json: dict,
headers: Optional[dict[str, str]] = None,
on_response: Optional[Callable[[Response], None]] = None
) -> Any
发送 PATCH 请求。
get ¶
用于在 LangGraph 中同步管理助手的客户端。
此类提供与助手交互的方法,助手是图的版本化配置。
示例
方法
名称 | 描述 |
---|---|
get |
通过 ID 获取助手。 |
get_graph |
通过 ID 获取助手的图。 |
get_schemas |
通过 ID 获取助手的模式。 |
get_subgraphs |
通过 ID 获取助手的模式。 |
create |
创建新助手。 |
update |
更新助手。 |
delete |
删除助手。 |
search |
搜索助手。 |
get_versions |
列出助手的所有版本。 |
set_latest |
更改助手的版本。 |
要获取的助手 ID 或图名称(用于使用默认助手)。
get_schemas ¶
get_graph(
assistant_id: str,
*,
xray: Union[int, bool] = False,
headers: Optional[dict[str, str]] = None
) -> dict[str, list[dict[str, Any]]]
通过 ID 获取助手的图。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要获取其图的助手的 ID。 |
必需 |
xray
|
联合[int, bool]
|
包含子图的图表示。如果提供了整数值,则只包含深度小于或等于该值的子图。 |
False
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Graph |
dict[str, list[dict[str, Any]]]
|
助手的图信息,JSON 格式。 |
用法示例
client = get_sync_client(url="http://localhost:2024")
graph_info = client.assistants.get_graph(
assistant_id="my_assistant_id"
)
print(graph_info)
--------------------------------------------------------------------------------------------------------------------------
{
'nodes':
[
{'id': '__start__', 'type': 'schema', 'data': '__start__'},
{'id': '__end__', 'type': 'schema', 'data': '__end__'},
{'id': 'agent','type': 'runnable','data': {'id': ['langgraph', 'utils', 'RunnableCallable'],'name': 'agent'}},
],
'edges':
[
{'source': '__start__', 'target': 'agent'},
{'source': 'agent','target': '__end__'}
]
}
get_subgraphs ¶
通过 ID 获取助手的模式。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要获取其模式的助手的 ID。 |
必需 |
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
GraphSchema |
GraphSchema
|
助手的图模式。 |
用法示例
client = get_sync_client(url="http://localhost:2024")
schema = client.assistants.get_schemas(
assistant_id="my_assistant_id"
)
print(schema)
----------------------------------------------------------------------------------------------------------------------------
{
'graph_id': 'agent',
'state_schema':
{
'title': 'LangGraphInput',
'$ref': '#/definitions/AgentState',
'definitions':
{
'BaseMessage':
{
'title': 'BaseMessage',
'description': 'Base abstract Message class. Messages are the inputs and outputs of ChatModels.',
'type': 'object',
'properties':
{
'content':
{
'title': 'Content',
'anyOf': [
{'type': 'string'},
{'type': 'array','items': {'anyOf': [{'type': 'string'}, {'type': 'object'}]}}
]
},
'additional_kwargs':
{
'title': 'Additional Kwargs',
'type': 'object'
},
'response_metadata':
{
'title': 'Response Metadata',
'type': 'object'
},
'type':
{
'title': 'Type',
'type': 'string'
},
'name':
{
'title': 'Name',
'type': 'string'
},
'id':
{
'title': 'Id',
'type': 'string'
}
},
'required': ['content', 'type']
},
'AgentState':
{
'title': 'AgentState',
'type': 'object',
'properties':
{
'messages':
{
'title': 'Messages',
'type': 'array',
'items': {'$ref': '#/definitions/BaseMessage'}
}
},
'required': ['messages']
}
}
},
'config_schema':
{
'title': 'Configurable',
'type': 'object',
'properties':
{
'model_name':
{
'title': 'Model Name',
'enum': ['anthropic', 'openai'],
'type': 'string'
}
}
}
}
create ¶
update ¶
create(
graph_id: Optional[str],
config: Optional[Config] = None,
*,
metadata: Json = None,
assistant_id: Optional[str] = None,
if_exists: Optional[OnConflictBehavior] = None,
name: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
description: Optional[str] = None
) -> Assistant
创建新助手。
当图是可配置的且您希望基于不同配置创建不同助手时很有用。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
graph_id
|
可选[str]
|
助手应使用的图的 ID。图 ID 通常在 langgraph.json 配置中设置。 |
必需 |
config
|
可选[Config]
|
用于图的配置。 |
无
|
metadata
|
Json
|
要添加到助手的元数据。 |
无
|
assistant_id
|
可选[str]
|
要使用的助手 ID,如果未提供,将默认为随机 UUID。 |
无
|
if_exists
|
可选[OnConflictBehavior]
|
如何处理重复创建。默认在底层为 'raise'。必须是 'raise'(如果重复则抛出错误)或 'do_nothing'(返回现有助手)。 |
无
|
name
|
可选[str]
|
助手的名称。默认在底层为 'Untitled'。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
description
|
可选[str]
|
助手的可选描述。 description 字段适用于 langgraph-api server 版本 >=0.0.45 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Assistant |
Assistant
|
创建的助手。 |
delete ¶
update(
assistant_id: str,
*,
graph_id: Optional[str] = None,
config: Optional[Config] = None,
metadata: Json = None,
name: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
description: Optional[str] = None
) -> Assistant
更新助手。
使用此方法指向不同的图、更新配置或更改助手的元数据。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
要更新的助手。 |
必需 |
graph_id
|
可选[str]
|
助手应使用的图的 ID。图 ID 通常在 langgraph.json 配置中设置。如果为 None,助手将继续指向相同的图。 |
无
|
config
|
可选[Config]
|
用于图的配置。 |
无
|
metadata
|
Json
|
要与现有助手元数据合并的元数据。 |
无
|
name
|
可选[str]
|
助手的新名称。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
description
|
可选[str]
|
助手的可选描述。 description 字段适用于 langgraph-api server 版本 >=0.0.45 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
Assistant |
Assistant
|
已更新的助手。 |
search ¶
get_versions ¶
search(
*,
metadata: Json = None,
graph_id: Optional[str] = None,
limit: int = 10,
offset: int = 0,
headers: Optional[dict[str, str]] = None
) -> list[Assistant]
set_latest ¶
get_versions(
assistant_id: str,
metadata: Json = None,
limit: int = 10,
offset: int = 0,
*,
headers: Optional[dict[str, str]] = None
) -> list[AssistantVersion]
此类提供创建、检索和管理线程的方法,线程表示对话或有状态交互。
用于在 LangGraph 中管理线程的同步客户端。
get ¶
示例
方法
名称 | 描述 |
---|---|
get |
创建新线程。 |
create |
更新线程。 |
update |
删除线程。 |
delete |
搜索线程。 |
search |
copy |
复制线程。 |
get_state |
获取线程状态。 |
update_state |
更新线程状态。 |
get_history |
获取线程状态历史。 |
|
create ¶
create ¶
create(
*,
metadata: Json = None,
thread_id: Optional[str] = None,
if_exists: Optional[OnConflictBehavior] = None,
supersteps: Optional[
Sequence[dict[str, Sequence[dict[str, Any]]]]
] = None,
graph_id: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Thread
更新线程。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
metadata
|
Json
|
线程 ID。如果为 None,ID 将是随机生成的 UUID。 |
无
|
要获取的线程 ID。
|
可选[str]
|
如何处理重复创建。默认在底层为 'raise'。必须是 'raise'(如果重复则抛出错误)或 'do_nothing'(返回现有线程)。 |
无
|
if_exists
|
可选[OnConflictBehavior]
|
supersteps |
无
|
可选[序列[dict[str, 序列[dict[str, Any]]]]]
|
创建线程时应用超步列表,每个超步包含一系列更新。每次更新都有
|
与线程关联的可选图 ID。 |
无
|
graph_id
|
可选[str]
|
创建的线程。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
线程对象。 |
线程对象。
|
|
update ¶
update(
thread_id: str,
*,
metadata: dict[str, Any],
headers: Optional[dict[str, str]] = None
) -> Thread
delete ¶
search ¶
search(
*,
metadata: Json = None,
values: Json = None,
status: Optional[ThreadStatus] = None,
limit: int = 10,
offset: int = 0,
headers: Optional[dict[str, str]] = None
) -> list[Thread]
copy ¶
get_state ¶
get_state(
thread_id: str,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
*,
subgraphs: bool = False,
headers: Optional[dict[str, str]] = None
) -> ThreadState
update_state
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
checkpoint |
必需 |
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_id |
无
|
包含子图状态。
|
bool
|
ThreadState |
False
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
线程的状态。 |
线程的状态。
|
|
用法示例
client = get_sync_client(url="http://localhost:2024")
thread_state = client.threads.get_state(
thread_id="my_thread_id",
checkpoint_id="my_checkpoint_id"
)
print(thread_state)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
'values': {
'messages': [
{
'content': 'how are you?',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10',
'example': False
},
{
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'additional_kwargs': {},
'response_metadata': {},
'type': 'ai',
'name': None,
'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b',
'example': False,
'tool_calls': [],
'invalid_tool_calls': [],
'usage_metadata': None
}
]
},
'next': [],
'checkpoint':
{
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-e6fb-67b1-8001-abd5184439d1'
}
'metadata':
{
'step': 1,
'run_id': '1ef4a9b8-d7da-679a-a45a-872054341df2',
'source': 'loop',
'writes':
{
'agent':
{
'messages': [
{
'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b',
'name': None,
'type': 'ai',
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'example': False,
'tool_calls': [],
'usage_metadata': None,
'additional_kwargs': {},
'response_metadata': {},
'invalid_tool_calls': []
}
]
}
},
'user_id': None,
'graph_id': 'agent',
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'created_by': 'system',
'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'},
'created_at': '2024-07-25T15:35:44.184703+00:00',
'parent_config':
{
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-d80d-6fa7-8000-9300467fad0f'
}
}
update_state ¶
update_state(
thread_id: str,
values: Optional[Union[dict, Sequence[dict]]],
*,
as_node: Optional[str] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> ThreadUpdateStateResponse
get_history
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
必需 | |
要过滤的状态值。
|
用于更新状态的值。
|
as_node |
必需 |
更新状态,就好像这个节点刚刚执行过一样。
|
可选[str]
|
要更新状态的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
(已弃用) 要更新状态的检查点 ID。 |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
更新线程状态后的响应。 |
更新线程状态后的响应。
|
|
用法示例
response = await client.threads.update_state(
thread_id="my_thread_id",
values={"messages":[{"role": "user", "content": "hello!"}]},
as_node="my_node",
)
print(response)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
'checkpoint': {
'thread_id': 'e2496803-ecd5-4e0c-a779-3226296181c2',
'checkpoint_ns': '',
'checkpoint_id': '1ef4a9b8-e6fb-67b1-8001-abd5184439d1',
'checkpoint_map': {}
}
}
get_history ¶
get_history(
thread_id: str,
*,
limit: int = 10,
before: Optional[str | Checkpoint] = None,
metadata: Optional[dict] = None,
checkpoint: Optional[Checkpoint] = None,
headers: Optional[dict[str, str]] = None
) -> list[ThreadState]
SyncRunsClient ¶
用于在 LangGraph 中管理运行的同步客户端。
此类提供创建、检索和管理运行(表示图的独立执行)的方法。
示例
方法
名称 | 描述 |
---|---|
stream |
创建后台运行。 |
create |
create_batch |
创建一批无状态后台运行。 |
wait |
创建运行,等待其完成并返回最终状态。 |
list |
列出运行。 |
获取运行。 |
get |
cancel |
join |
cancel |
阻塞直到运行完成。返回线程的最终状态。 |
join_stream |
实时流式传输运行输出,直到运行完成。 |
删除运行。 |
delete |
|
stream ¶
stream(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
stream_mode: Union[
StreamMode, Sequence[StreamMode]
] = "values",
stream_subgraphs: bool = False,
stream_resumable: bool = False,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
feedback_keys: Optional[Sequence[str]] = None,
on_disconnect: Optional[DisconnectMode] = None,
on_completion: Optional[OnCompletionBehavior] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
if_not_exists: Optional[IfNotExists] = None,
after_seconds: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> Iterator[StreamPart]
创建后台运行。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要从中流式传输的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
input |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
要执行的命令。 |
无
|
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。
|
'values' |
stream_subgraphs
|
是否流式传输子图的输出。
|
bool
|
stream_resumable |
False
|
流是否可恢复。如果为 True,即使断开连接后,也可以完全恢复和重播流。
|
bool
|
分配给运行的元数据。 |
False
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
可选[序列[str]]
|
分配给运行的反馈键。
|
on_disconnect |
无
|
可选[DisconnectMode]
|
要使用的断开连接模式。必须是 'cancel' 或 'continue' 之一。
|
on_completion |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
Run |
无
|
返回
类型 | 描述 |
---|---|
Iterator[StreamPart]
|
Iterator[StreamPart]: 流结果的迭代器。 |
用法示例
client = get_sync_client(url="http://localhost:2024")
async for chunk in client.runs.stream(
thread_id=None,
assistant_id="agent",
input={"messages": [{"role": "user", "content": "how are you?"}]},
stream_mode=["values","debug"],
metadata={"name":"my_run"},
config={"configurable": {"model_name": "anthropic"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
feedback_keys=["my_feedback_key_1","my_feedback_key_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
):
print(chunk)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StreamPart(event='metadata', data={'run_id': '1ef4a9b8-d7da-679a-a45a-872054341df2'})
StreamPart(event='values', data={'messages': [{'content': 'how are you?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10', 'example': False}]})
StreamPart(event='values', data={'messages': [{'content': 'how are you?', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'fe0a5778-cfe9-42ee-b807-0adaa1873c10', 'example': False}, {'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-159b782c-b679-4830-83c6-cef87798fe8b', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]})
StreamPart(event='end', data=None)
create ¶
create(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
stream_mode: Union[
StreamMode, Sequence[StreamMode]
] = "values",
stream_subgraphs: bool = False,
stream_resumable: bool = False,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
on_completion: Optional[OnCompletionBehavior] = None,
if_not_exists: Optional[IfNotExists] = None,
after_seconds: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> Run
create_batch
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要从中流式传输的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
input |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
要执行的命令。 |
无
|
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。
|
'values' |
stream_subgraphs
|
是否流式传输子图的输出。
|
bool
|
stream_resumable |
False
|
流是否可恢复。如果为 True,即使断开连接后,也可以完全恢复和重播流。
|
bool
|
分配给运行的元数据。 |
False
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
Run |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
client = get_sync_client(url="http://localhost:2024")
background_run = client.runs.create(
thread_id="my_thread_id",
assistant_id="my_assistant_id",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
print(background_run)
--------------------------------------------------------------------------------
{
'run_id': 'my_run_id',
'thread_id': 'my_thread_id',
'assistant_id': 'my_assistant_id',
'created_at': '2024-07-25T15:35:42.598503+00:00',
'updated_at': '2024-07-25T15:35:42.598503+00:00',
'metadata': {},
'status': 'pending',
'kwargs':
{
'input':
{
'messages': [
{
'role': 'user',
'content': 'how are you?'
}
]
},
'config':
{
'metadata':
{
'created_by': 'system'
},
'configurable':
{
'run_id': 'my_run_id',
'user_id': None,
'graph_id': 'agent',
'thread_id': 'my_thread_id',
'checkpoint_id': None,
'model_name': "openai",
'assistant_id': 'my_assistant_id'
}
},
'webhook': "https://my.fake.webhook.com",
'temporary': False,
'stream_mode': ['values'],
'feedback_keys': None,
'interrupt_after': ["node_to_stop_after_1","node_to_stop_after_2"],
'interrupt_before': ["node_to_stop_before_1","node_to_stop_before_2"]
},
'multitask_strategy': 'interrupt'
}
create_batch ¶
wait
wait ¶
wait(
thread_id: Optional[str],
assistant_id: str,
*,
input: Optional[dict] = None,
command: Optional[Command] = None,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint_during: Optional[bool] = None,
checkpoint: Optional[Checkpoint] = None,
checkpoint_id: Optional[str] = None,
interrupt_before: Optional[
Union[All, Sequence[str]]
] = None,
interrupt_after: Optional[
Union[All, Sequence[str]]
] = None,
webhook: Optional[str] = None,
on_disconnect: Optional[DisconnectMode] = None,
on_completion: Optional[OnCompletionBehavior] = None,
multitask_strategy: Optional[MultitaskStrategy] = None,
if_not_exists: Optional[IfNotExists] = None,
after_seconds: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
on_run_created: Optional[
Callable[[RunCreateMetadata], None]
] = None
) -> Union[list[dict], dict[str, Any]]
list
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
可选[str]
|
要运行的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
必需 | |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
可选[Command]
|
要执行的命令。不能与输入组合使用。
|
要执行的命令。 |
无
|
metadata
|
按元数据键值对过滤状态。
|
助手的配置。 |
无
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[Checkpoint]
|
要获取状态的检查点。
|
checkpoint_during |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
在执行前立即中断的节点。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
在执行前立即中断的节点。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[DisconnectMode]
|
要使用的断开连接模式。必须是 'cancel' 或 'continue' 之一。
|
on_completion |
无
|
可选[OnCompletionBehavior]
|
是否删除或保留为无状态运行创建的线程。必须是 'delete' 或 'keep' 之一。
|
webhook |
无
|
可选[MultitaskStrategy]
|
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
if_not_exists |
无
|
可选[IfNotExists]
|
如何处理缺失的线程。默认为 'reject'。必须是 'reject'(如果缺失则抛出错误)或 'create'(创建新线程)。
|
after_seconds |
无
|
可选[int]
|
运行开始前等待的秒数。用于安排未来的运行。
|
on_run_created |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
可选[可调用[[RunCreateMetadata], None]]
|
运行创建时的回调。
|
Run |
无
|
返回
类型 | 描述 |
---|---|
Union[list[dict], dict[str, Any]]
|
|
用法示例
final_state_of_run = client.runs.wait(
thread_id=None,
assistant_id="agent",
input={"messages": [{"role": "user", "content": "how are you?"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "anthropic"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
print(final_state_of_run)
-------------------------------------------------------------------------------------------------------------------------------------------
{
'messages': [
{
'content': 'how are you?',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': 'f51a862c-62fe-4866-863b-b0863e8ad78a',
'example': False
},
{
'content': "I'm doing well, thanks for asking! I'm an AI assistant created by Anthropic to be helpful, honest, and harmless.",
'additional_kwargs': {},
'response_metadata': {},
'type': 'ai',
'name': None,
'id': 'run-bf1cd3c6-768f-4c16-b62d-ba6f17ad8b36',
'example': False,
'tool_calls': [],
'invalid_tool_calls': [],
'usage_metadata': None
}
]
}
list ¶
get ¶
cancel ¶
cancel(
thread_id: str,
run_id: str,
*,
wait: bool = False,
action: CancelAction = "interrupt",
headers: Optional[dict[str, str]] = None
) -> None
join ¶
join_stream ¶
join_stream(
thread_id: str,
run_id: str,
*,
stream_mode: Optional[
Union[StreamMode, Sequence[StreamMode]]
] = None,
cancel_on_disconnect: bool = False,
headers: Optional[dict[str, str]] = None,
last_event_id: Optional[str] = None
) -> Iterator[StreamPart]
cancel_on_disconnect
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
要加入的运行 ID。 |
必需 |
要获取的运行 ID。
|
str
|
dict |
必需 |
联合[StreamMode, 序列[StreamMode]]
|
要使用的流模式。必须是创建运行时传递的流模式的子集。后台运行默认包含所有流模式的并集。
|
|
无
|
流断开连接时是否取消运行。
|
bool
|
可选[联合[StreamMode, 序列[StreamMode]]] |
False
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
Iterator[StreamPart]
|
无 |
delete ¶
SyncCronClient ¶
用于在 LangGraph 中管理定时任务的同步客户端。
此类提供创建和管理用于自动化图执行的计划任务(cron 作业)的方法。
示例
cron 客户端功能并非所有许可证都支持。请查阅相关许可证文档以获取最新功能可用性详情。
create_for_thread
方法
名称 | 描述 |
---|---|
为线程创建定时任务。 |
创建定时运行。 |
create |
删除定时任务。 |
delete |
获取定时任务列表。 |
search |
|
create_for_thread ¶
create_for_thread(
thread_id: str,
assistant_id: str,
*,
schedule: str,
input: Optional[dict] = None,
metadata: Optional[dict] = None,
checkpoint_during: Optional[bool] = None,
config: Optional[Config] = None,
interrupt_before: Optional[
Union[All, list[str]]
] = None,
interrupt_after: Optional[Union[All, list[str]]] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Run
创建定时运行。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
要获取的线程 ID。
|
str
|
用于定时任务的助手 ID 或图名称。如果使用图名称,将默认为从该图创建的第一个助手。 |
必需 |
assistant_id
|
str
|
schedule |
必需 |
执行此任务的 cron 调度。
|
str
|
分配给定时任务运行的元数据。 |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
metadata
|
按元数据键值对过滤状态。
|
无
|
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
定时任务运行。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
定时任务运行。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
可选[str]
|
if_not_exists |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
client = get_sync_client(url="http://localhost:8123")
cron_run = client.crons.create_for_thread(
thread_id="my-thread-id",
assistant_id="agent",
schedule="27 15 * * *",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
create ¶
create(
assistant_id: str,
*,
schedule: str,
input: Optional[dict] = None,
metadata: Optional[dict] = None,
config: Optional[Config] = None,
checkpoint_during: Optional[bool] = None,
interrupt_before: Optional[
Union[All, list[str]]
] = None,
interrupt_after: Optional[Union[All, list[str]]] = None,
webhook: Optional[str] = None,
multitask_strategy: Optional[str] = None,
headers: Optional[dict[str, str]] = None
) -> Run
删除定时任务。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
str
|
schedule |
必需 |
执行此任务的 cron 调度。
|
str
|
分配给定时任务运行的元数据。 |
必需 |
图的输入。
|
按元数据键值对过滤状态。
|
command |
无
|
metadata
|
按元数据键值对过滤状态。
|
无
|
|
config
|
可选[Config]
|
要从其恢复的检查点。 |
无
|
可选[bool]
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
interrupt_before |
无
|
可选[联合[All, 序列[str]]]
|
定时任务运行。
|
interrupt_after |
无
|
在执行后立即中断的节点。
|
定时任务运行。
|
feedback_keys |
无
|
LangGraph API 调用完成后调用的 Webhook。
|
可选[str]
|
multitask_strategy |
无
|
可选[MultitaskStrategy]
|
可选[str]
|
if_not_exists |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
创建的后台运行。 |
创建的后台运行。
|
|
用法示例
client = get_sync_client(url="http://localhost:8123")
cron_run = client.crons.create(
assistant_id="agent",
schedule="27 15 * * *",
input={"messages": [{"role": "user", "content": "hello!"}]},
metadata={"name":"my_run"},
config={"configurable": {"model_name": "openai"}},
checkpoint_during=True,
interrupt_before=["node_to_stop_before_1","node_to_stop_before_2"],
interrupt_after=["node_to_stop_after_1","node_to_stop_after_2"],
webhook="https://my.fake.webhook.com",
multitask_strategy="interrupt"
)
delete ¶
search ¶
search(
*,
assistant_id: Optional[str] = None,
thread_id: Optional[str] = None,
limit: int = 10,
offset: int = 0,
headers: Optional[dict[str, str]] = None
) -> list[Cron]
create_for_thread
async
¶
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
assistant_id
|
可选[str]
|
要搜索的线程 ID。 |
无
|
要获取的线程 ID。
|
可选[str]
|
无
|
|
limit
|
int
|
要返回的最大结果数。 |
10
|
offset
|
int
|
要跳过的结果数。 |
0
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Cron]: 搜索返回的定时任务列表。
|
|
用法示例
client = get_sync_client(url="http://localhost:8123")
cron_jobs = client.crons.search(
assistant_id="my_assistant_id",
thread_id="my_thread_id",
limit=5,
offset=5,
)
print(cron_jobs)
----------------------------------------------------------
[
{
'cron_id': '1ef3cefa-4c09-6926-96d0-3dc97fd5e39b',
'assistant_id': 'my_assistant_id',
'thread_id': 'my_thread_id',
'user_id': None,
'payload':
{
'input': {'start_time': ''},
'schedule': '4 * * * *',
'assistant_id': 'my_assistant_id'
},
'schedule': '4 * * * *',
'next_run_date': '2024-07-25T17:04:00+00:00',
'end_time': None,
'created_at': '2024-07-08T06:02:23.073257+00:00',
'updated_at': '2024-07-08T06:02:23.073257+00:00'
}
]
SyncStoreClient ¶
用于对键值存储进行同步操作的客户端。
提供与远程键值存储交互的方法,允许在命名空间层次结构中存储和检索项目。
示例
方法
名称 | 描述 |
---|---|
存储或更新项目。 |
get_item |
检索单个项目。 |
delete_item |
删除项目。 |
search_items |
在命名空间前缀内搜索项目。 |
list_namespaces |
列出带可选匹配条件的命名空间。 |
|
put_item ¶
put_item(
namespace: Sequence[str],
/,
key: str,
value: dict[str, Any],
index: Optional[
Union[Literal[False], list[str]]
] = None,
ttl: Optional[int] = None,
headers: Optional[dict[str, str]] = None,
) -> None
get_item
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
namespace
|
表示命名空间路径的字符串列表。
|
key |
必需 |
命名空间内项目的唯一标识符。
|
str
|
value |
必需 |
包含项目数据的字典。
|
要与现有线程元数据合并的元数据。
|
index |
必需 |
可选[联合[字面量[False], list[str]]]
|
控制搜索索引 - None(使用默认值)、False(禁用)或要索引的字段路径列表。
|
ttl |
无
|
项目可选的存活时间(分钟),或 None 表示永不过期。
|
运行开始前等待的秒数。用于安排未来的运行。
|
|
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
无
|
无 |
get_item ¶
get_item(
namespace: Sequence[str],
/,
key: str,
*,
refresh_ttl: Optional[bool] = None,
headers: Optional[dict[str, str]] = None,
) -> Item
delete_item
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
命名空间内项目的唯一标识符。
|
str
|
表示命名空间路径的可选字符串列表。 |
必需 |
namespace
|
表示命名空间路径的字符串列表。
|
refresh_ttl |
必需 |
是否在此读取操作时刷新 TTL。如果为 None,则使用存储的默认行为。
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
Item |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
检索到的项目。 |
检索到的项目。
|
|
delete_item ¶
search_items ¶
search_items(
namespace_prefix: Sequence[str],
/,
filter: Optional[dict[str, Any]] = None,
limit: int = 10,
offset: int = 0,
query: Optional[str] = None,
refresh_ttl: Optional[bool] = None,
headers: Optional[dict[str, str]] = None,
) -> SearchItemsResponse
list_namespaces
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
表示命名空间前缀的字符串列表。
|
表示命名空间路径的字符串列表。
|
filter |
必需 |
可选[dict[str, Any]]
|
可选的键值对字典,用于过滤结果。
|
要返回的最大项目数(默认为 10)。 |
无
|
limit
|
int
|
在返回结果之前要跳过的项目数(默认为 0)。 |
10
|
offset
|
int
|
query |
0
|
自然语言搜索的可选查询。
|
可选[str]
|
是否在此搜索时刷新返回项目的 TTL。如果为 None,则使用存储的默认行为。 |
无
|
是否在此读取操作时刷新 TTL。如果为 None,则使用存储的默认行为。
|
是否在运行期间(或仅在结束/中断时)进行检查点。
|
SearchItemsResponse |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[Item]: 匹配搜索条件的项目列表。
|
|
用法示例
client = get_sync_client(url="http://localhost:8123")
items = client.store.search_items(
["documents"],
filter={"author": "John Doe"},
limit=5,
offset=0
)
print(items)
----------------------------------------------------------------
{
"items": [
{
"namespace": ["documents", "user123"],
"key": "item789",
"value": {
"title": "Another Document",
"author": "John Doe"
},
"created_at": "2024-07-30T12:00:00Z",
"updated_at": "2024-07-30T12:00:00Z"
},
# ... additional items ...
]
}
list_namespaces ¶
list_namespaces(
prefix: Optional[list[str]] = None,
suffix: Optional[list[str]] = None,
max_depth: Optional[int] = None,
limit: int = 100,
offset: int = 0,
headers: Optional[dict[str, str]] = None,
) -> ListNamespaceResponse
put_item
async
¶
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
可选[list[str]]
|
表示要过滤命名空间的前缀的可选字符串列表。
|
suffix |
无
|
表示要过滤命名空间的后缀的可选字符串列表。
|
表示要过滤命名空间的前缀的可选字符串列表。
|
max_depth |
无
|
指定要返回的命名空间最大深度的可选整数。
|
运行开始前等待的秒数。用于安排未来的运行。
|
要返回的最大命名空间数(默认为 100)。 |
无
|
limit
|
int
|
在返回结果之前要跳过的命名空间数(默认为 0)。 |
100
|
offset
|
int
|
ListNamespaceResponse |
0
|
headers
|
可选[dict[str, str]]
|
可选的自定义请求头。 |
无
|
返回
类型 | 描述 |
---|---|
list[list[str]]: 匹配条件的命名空间列表。
|
|
get_client ¶
get_client(
*,
url: Optional[str] = None,
api_key: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
timeout: Optional[TimeoutTypes] = None
) -> LangGraphClient
获取 LangGraphClient 实例。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
url
|
可选[str]
|
LangGraph API 的 URL。 |
无
|
api_key
|
可选[str]
|
API 密钥。如果未提供,将从环境中读取。优先级:1. 显式参数 2. LANGGRAPH_API_KEY 3. LANGSMITH_API_KEY 4. LANGCHAIN_API_KEY |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义头部 |
无
|
timeout
|
可选[TimeoutTypes]
|
HTTP 客户端的可选超时配置。接受 httpx.Timeout 实例、浮点数(秒)或超时元组。元组格式为 (connect, read, write, pool)。如果未提供,默认为 connect=5s, read=300s, write=300s, pool=5s。 |
无
|
返回
名称 | 类型 | 描述 |
---|---|---|
LangGraphClient |
LangGraphClient
|
用于访问 AssistantsClient、 |
LangGraphClient
|
ThreadsClient、RunsClient 和 CronClient 的顶层客户端。 |
get_sync_client ¶
get_sync_client(
*,
url: Optional[str] = None,
api_key: Optional[str] = None,
headers: Optional[dict[str, str]] = None,
timeout: Optional[TimeoutTypes] = None
) -> SyncLangGraphClient
获取同步 LangGraphClient 实例。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
url
|
可选[str]
|
LangGraph API 的 URL。 |
无
|
api_key
|
可选[str]
|
API 密钥。如果未提供,将从环境中读取。优先级:1. 显式参数 2. LANGGRAPH_API_KEY 3. LANGSMITH_API_KEY 4. LANGCHAIN_API_KEY |
无
|
headers
|
可选[dict[str, str]]
|
可选的自定义头部 |
无
|
timeout
|
可选[TimeoutTypes]
|
HTTP 客户端的可选超时配置。接受 httpx.Timeout 实例、浮点数(秒)或超时元组。元组格式为 (connect, read, write, pool)。如果未提供,默认为 connect=5s, read=300s, write=300s, pool=5s。 |
无
|
返回:SyncLangGraphClient:用于访问 AssistantsClient、ThreadsClient、RunsClient 和 CronClient 的顶层同步客户端。
用于与 LangGraph API 交互的数据模型。
类
名称 | 描述 |
---|---|
配置 |
调用的配置选项。 |
检查点 |
表示执行过程中的一个检查点。 |
GraphSchema |
定义图的结构和属性。 |
AssistantBase |
助手的基本模型。 |
AssistantVersion |
表示助手的特定版本。 |
Assistant |
表示具有附加属性的助手。 |
中断 |
表示执行流中的中断。 |
线程对象。 |
表示对话线程。 |
ThreadTask |
表示线程中的任务。 |
线程的状态。 |
表示线程的状态。 |
更新线程状态后的响应。 |
表示更新线程状态的响应。 |
创建的后台运行。 |
表示单个执行运行。 |
Cron |
表示计划任务。 |
RunCreate |
定义启动后台运行的参数。 |
检索到的项目。 |
表示图存储中的单个文档或数据条目。 |
list[list[str]]: 匹配条件的命名空间列表。 |
列出命名空间的响应结构。 |
SearchItem |
包含来自搜索操作的可选相关性得分的项目。 |
list[Item]: 匹配搜索条件的项目列表。 |
搜索项目的响应结构。 |
StreamPart |
表示流响应的一部分。 |
发送 |
表示要发送到图中特定节点的消息。 |
Command |
表示一个或多个命令,用于控制图的执行流程和状态。 |
RunCreateMetadata |
运行创建请求的元数据。 |
属性
名称 | 类型 | 描述 |
---|---|---|
Json |
表示一个类似 JSON 的结构,可以是 None 或带有字符串键和任意值的字典。 |
|
RunStatus |
表示运行的状态 |
|
ThreadStatus |
表示线程的状态 |
|
StreamMode |
定义流模式 |
|
DisconnectMode |
指定断开连接时的行为 |
|
MultitaskStrategy |
定义如何处理多个任务 |
|
OnConflictBehavior |
指定冲突时的行为 |
|
OnCompletionBehavior |
定义完成后的操作 |
|
All |
表示通配符或“全部”选择器。 |
|
IfNotExists |
如果线程不存在,则指定行为 |
|
取消运行时要执行的操作。可能的值为 |
取消运行时的操作。 |
|
AssistantSortBy |
要排序的字段。 |
|
ThreadSortBy |
要排序的字段。 |
|
SortOrder |
排序顺序。 |
RunStatus module-attribute
¶
RunStatus = Literal[
"pending",
"running",
"error",
"success",
"timeout",
"interrupted",
]
表示运行的状态:- "pending":运行正在等待开始。- "running":运行正在执行。- "error":运行遇到错误并停止。- "success":运行成功完成。- "timeout":运行超出时间限制。- "interrupted":运行被手动停止或中断。
ThreadStatus module-attribute
¶
ThreadStatus = Literal[
"idle", "busy", "interrupted", "error"
]
表示线程的状态:- "idle":线程当前未处理任何任务。- "busy":线程正在积极处理任务。- "interrupted":线程的执行被中断。- "error":任务处理过程中发生异常。
StreamMode module-attribute
¶
StreamMode = Literal[
"values",
"messages",
"updates",
"events",
"debug",
"custom",
"messages-tuple",
]
定义流模式:- "values":仅流式传输值。- "messages":流式传输完整消息。- "updates":流式传输状态更新。- "events":流式传输执行过程中发生的事件。- "debug":流式传输详细调试信息。- "custom":流式传输自定义事件。
DisconnectMode module-attribute
¶
DisconnectMode = Literal['cancel', 'continue']
指定断开连接时的行为:- "cancel":断开连接时取消操作。- "continue":即使断开连接也继续操作。
MultitaskStrategy module-attribute
¶
MultitaskStrategy = Literal[
"reject", "interrupt", "rollback", "enqueue"
]
定义如何处理多个任务:- "reject":繁忙时拒绝新任务。- "interrupt":为新任务中断当前任务。- "rollback":回滚当前任务并开始新任务。- "enqueue":将新任务排队以供后续执行。
OnConflictBehavior module-attribute
¶
OnConflictBehavior = Literal['raise', 'do_nothing']
指定冲突时的行为:- "raise":发生冲突时引发异常。- "do_nothing":忽略冲突并继续。
OnCompletionBehavior module-attribute
¶
OnCompletionBehavior = Literal['delete', 'keep']
定义完成后的操作:- "delete":完成后删除资源。- "keep":完成后保留资源。
IfNotExists module-attribute
¶
IfNotExists = Literal['create', 'reject']
如果线程不存在,则指定行为:- "create":如果线程不存在则创建新线程。- "reject":如果线程不存在则拒绝操作。
CancelAction ¶
CancelAction = Literal['interrupt', 'rollback']
取消运行时要执行的操作。- "interrupt":简单地取消运行。- "rollback":取消运行。然后删除运行和相关检查点。
AssistantSortBy module-attribute
¶
AssistantSortBy = Literal[
"assistant_id",
"graph_id",
"name",
"created_at",
"updated_at",
]
要排序的字段。
ThreadSortBy module-attribute
¶
ThreadSortBy = Literal[
"thread_id", "status", "created_at", "updated_at"
]
要排序的字段。
Config ¶
基类:TypedDict
调用的配置选项。
属性
名称 | 类型 | 描述 |
---|---|---|
标签 |
列表[字符串]
|
此调用及任何子调用(例如,调用 LLM 的链)的标签。 |
recursion_limit |
int
|
调用可递归的最大次数。如果未提供,默认为 25。 |
configurable |
要与现有线程元数据合并的元数据。
|
此 Runnable 上以前可配置的属性的运行时值, |
Checkpoint ¶
基类:TypedDict
表示执行过程中的一个检查点。
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
str
|
与此检查点关联的线程的唯一标识符。 |
checkpoint_ns |
str
|
检查点的命名空间;内部用于管理子图状态。 |
(已弃用) 要获取状态的检查点 ID。 |
可选[str]
|
检查点本身的可选唯一标识符。 |
checkpoint_map |
可选的键值对字典,用于过滤结果。
|
包含检查点特定数据的可选字典。 |
GraphSchema ¶
基类:TypedDict
定义图的结构和属性。
属性
名称 | 类型 | 描述 |
---|---|---|
graph_id |
str
|
图的 ID。 |
input_schema |
按元数据键值对过滤状态。
|
图输入的模式。 |
output_schema |
按元数据键值对过滤状态。
|
图输出的模式。 |
state_schema |
按元数据键值对过滤状态。
|
图状态的模式。 |
config_schema |
按元数据键值对过滤状态。
|
图配置的模式。 |
AssistantBase ¶
AssistantVersion ¶
Assistant ¶
表示具有附加属性的助手。
属性
名称 | 类型 | 描述 |
---|---|---|
updated_at |
datetime
|
助手最后更新时间。 |
assistant_id |
str
|
助手的 ID。 |
graph_id |
str
|
图的 ID。 |
config |
配置
|
助手配置。 |
created_at |
datetime
|
创建助手的时间。 |
metadata |
Json
|
助手元数据。 |
要更改到的版本。 |
int
|
助手的版本 |
name |
str
|
助手的名称 |
description |
可选[str]
|
助手的描述 |
Interrupt ¶
Thread ¶
基类:TypedDict
表示对话线程。
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
str
|
线程的 ID。 |
created_at |
datetime
|
创建线程的时间。 |
updated_at |
datetime
|
线程最后更新时间。 |
metadata |
Json
|
线程元数据。 |
可选[ThreadStatus] |
ThreadStatus
|
线程的状态,可以是 'idle'、'busy'、'interrupted' 之一。 |
要过滤的状态值。 |
Json
|
线程的当前状态。 |
中断 |
字典[字符串, 列表[Interrupt]]
|
在此线程中抛出的中断 |
ThreadState ¶
基类:TypedDict
表示线程的状态。
属性
名称 | 类型 | 描述 |
---|---|---|
要过滤的状态值。 |
Union[列表[字典], 字典[字符串, 任意]]
|
状态值。 |
next |
表示命名空间路径的字符串列表。
|
要执行的下一个节点。如果为空,则线程在收到新输入之前完成。 |
可选[Checkpoint] |
检查点
|
检查点的 ID。 |
metadata |
Json
|
此状态的元数据 |
created_at |
可选[str]
|
状态创建的时间戳 |
parent_checkpoint |
要获取状态的检查点。
|
父检查点的 ID。如果缺失,则这是根检查点。 |
任务 |
序列[ThreadTask]
|
在此步骤中要执行的任务。如果已尝试,可能包含错误。 |
parent_checkpoint instance-attribute
¶
parent_checkpoint: Optional[Checkpoint]
父检查点的 ID。如果缺失,则这是根检查点。
ThreadUpdateStateResponse ¶
Run ¶
基类:TypedDict
表示单个执行运行。
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的运行 ID。 |
str
|
运行的 ID。 |
要获取的线程 ID。 |
str
|
线程的 ID。 |
assistant_id |
str
|
用于此运行的助手。 |
created_at |
datetime
|
创建运行的时间。 |
updated_at |
datetime
|
运行最后更新时间。 |
可选[ThreadStatus] |
RunStatus
|
运行的状态。 'pending', 'running', "error", 'success', "timeout", "interrupted" 之一。 |
metadata |
Json
|
运行元数据。 |
可选[MultitaskStrategy] |
MultitaskStrategy
|
处理同一线程上并发运行的策略。 |
Cron ¶
基类:TypedDict
表示计划任务。
属性
名称 | 类型 | 描述 |
---|---|---|
要删除的定时任务 ID。 |
str
|
cron 的 ID。 |
要获取的线程 ID。 |
可选[str]
|
线程的 ID。 |
end_time |
可选[datetime]
|
停止运行 cron 的结束日期。 |
执行此任务的 cron 调度。 |
str
|
运行的计划,cron 格式。 |
created_at |
datetime
|
创建 cron 的时间。 |
updated_at |
datetime
|
cron 最后更新时间。 |
payload |
|
用于创建新运行的运行负载。 |
RunCreate ¶
基类:TypedDict
定义启动后台运行的参数。
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
可选[str]
|
要运行的线程的标识符。如果未提供,则运行是无状态的。 |
assistant_id |
str
|
用于此运行的助手的标识符。 |
图的输入。 |
按元数据键值对过滤状态。
|
运行的初始输入数据。 |
metadata |
按元数据键值对过滤状态。
|
与运行关联的附加元数据。 |
config |
可选[Config]
|
运行的配置选项。 |
(已弃用) 要获取状态的检查点 ID。 |
可选[str]
|
要从中恢复的检查点标识符。 |
可选[联合[All, 序列[str]]] |
表示要过滤命名空间的前缀的可选字符串列表。
|
在执行中断之前中断的节点名称列表。 |
在执行后立即中断的节点。 |
表示要过滤命名空间的前缀的可选字符串列表。
|
在执行中断之后中断的节点名称列表。 |
LangGraph API 调用完成后调用的 Webhook。 |
可选[str]
|
用于发送运行进度网络钩子通知的 URL。 |
可选[MultitaskStrategy] |
要使用的多任务策略。必须是 'reject'、'interrupt'、'rollback' 或 'enqueue' 之一。
|
处理同一线程上并发运行的策略。 |
multitask_strategy instance-attribute
¶
multitask_strategy: Optional[MultitaskStrategy]
处理同一线程上并发运行的策略。
Item ¶
基类:TypedDict
表示图存储中的单个文档或数据条目。
项目用于存储跨线程内存。
属性
名称 | 类型 | 描述 |
---|---|---|
namespace |
列表[字符串]
|
项目的命名空间。命名空间类似于文档的目录。 |
命名空间内项目的唯一标识符。 |
str
|
项目在其命名空间内的唯一标识符。 |
包含项目数据的字典。 |
要与现有线程元数据合并的元数据。
|
项目中存储的值。这是文档本身。 |
created_at |
datetime
|
项目创建时的时间戳。 |
updated_at |
datetime
|
项目最后更新时的时间戳。 |
ListNamespaceResponse ¶
SearchItemsResponse ¶
StreamPart ¶
Send ¶
Command ¶
基类:TypedDict
表示一个或多个命令,用于控制图的执行流程和状态。
此类型定义了节点可以返回的控制命令,以影响图的执行。它允许您导航到其他节点,更新图状态,并从中断中恢复。
属性
名称 | 类型 | 描述 |
---|---|---|
goto |
Union[Send, str, Sequence[Union[Send, str]]]
|
指定执行应在何处继续。可以是 |
update |
Union[dict[str, Any], Sequence[元组[字符串, 任意]]]
|
要应用于图状态的更新。可以是 |
resume |
任意
|
中断后用于恢复执行的值。 |
模块
名称 | 描述 |
---|---|
异常 |
身份验证系统中使用的异常。 |
类型 |
LangGraph 的身份验证和授权类型。 |
类
名称 | 描述 |
---|---|
Auth |
将自定义身份验证和授权管理添加到您的 LangGraph 应用程序。 |
Auth ¶
将自定义身份验证和授权管理添加到您的 LangGraph 应用程序。
Auth 类提供了处理 LangGraph 应用程序中身份验证和授权的统一系统。它支持自定义用户身份验证协议以及针对不同资源和操作的细粒度授权规则。
要使用,请创建单独的 python 文件并将该文件的路径添加到 LangGraph API 配置文件 (langgraph.json
)。在该文件中,创建 Auth 类的实例并根据需要注册身份验证和授权处理程序。
langgraph.json
示例文件
{
"dependencies": ["."],
"graphs": {
"agent": "./my_agent/agent.py:graph"
},
"env": ".env",
"auth": {
"path": "./auth.py:my_auth"
}
然后 LangGraph 服务器将加载您的身份验证文件并在每次请求到来时在服务器端运行它。
基本用法
from langgraph_sdk import Auth
my_auth = Auth()
async def verify_token(token: str) -> str:
# Verify token and return user_id
# This would typically be a call to your auth server
return "user_id"
@auth.authenticate
async def authenticate(authorization: str) -> str:
# Verify token and return user_id
result = await verify_token(authorization)
if result != "user_id":
raise Auth.exceptions.HTTPException(
status_code=401, detail="Unauthorized"
)
return result
# Global fallback handler
@auth.on
async def authorize_default(params: Auth.on.value):
return False # Reject all requests (default behavior)
@auth.on.threads.create
async def authorize_thread_create(params: Auth.on.threads.create.value):
# Allow the allowed user to create a thread
assert params.get("metadata", {}).get("owner") == "allowed_user"
@auth.on.store
async def authorize_store(ctx: Auth.types.AuthContext, value: Auth.types.on):
assert ctx.user.identity in value["namespace"], "Not authorized"
请求处理流程
- 身份验证(您的
@auth.authenticate
处理程序)首先在每个请求上执行 - 对于授权,将调用最具体的匹配处理程序
- 如果存在针对精确资源和操作的处理程序,则使用该处理程序(例如,
@auth.on.threads.create
) - 否则,如果存在针对资源并具有任何操作的处理程序,则使用该处理程序(例如,
@auth.on.threads
) - 最后,如果没有特定的处理程序匹配,则使用全局处理程序(例如,
@auth.on
) - 如果未设置全局处理程序,则接受请求
- 如果存在针对精确资源和操作的处理程序,则使用该处理程序(例如,
这允许您使用全局处理程序设置默认行为,同时根据需要覆盖特定路由。
方法
名称 | 描述 |
---|---|
authenticate |
注册身份验证处理函数。 |
属性
名称 | 类型 | 描述 |
---|---|---|
类型 |
身份验证类型定义的引用。 |
|
异常 |
身份验证异常定义的引用。 |
|
on |
授权处理程序的入口点,用于控制对特定资源的访问。 |
types class-attribute
instance-attribute
¶
types = types
身份验证类型定义的引用。
提供对身份验证系统中使用的所有类型定义的访问,例如 ThreadsCreate、AssistantsRead 等。
exceptions class-attribute
instance-attribute
¶
exceptions = exceptions
身份验证异常定义的引用。
提供对身份验证系统中使用的所有异常定义的访问,例如 HTTPException 等。
on instance-attribute
¶
授权处理程序的入口点,用于控制对特定资源的访问。
on 类提供了一种灵活的方式来定义应用程序中不同资源和操作的授权规则。它支持三种主要用法模式
- 适用于所有资源和操作的全局处理程序
- 适用于资源上所有操作的资源特定处理程序
- 用于细粒度控制的资源和操作特定处理程序
每个处理程序必须是接受两个参数的异步函数
- ctx (AuthContext): 包含请求上下文和已认证的用户信息
- value: 正在授权的数据(类型因端点而异)
处理程序应返回以下之一
- None or True: Accept the request
- False: Reject with 403 error
- FilterType: Apply filtering rules to the response
示例
所有请求的全局处理程序
@auth.on
async def reject_unhandled_requests(ctx: AuthContext, value: Any) -> None:
print(f"Request to {ctx.path} by {ctx.user.identity}")
return False
资源特定处理程序。这将优先于全局处理程序,适用于 threads
资源上的所有操作
@auth.on.threads
async def check_thread_access(ctx: AuthContext, value: Any) -> bool:
# Allow access only to threads created by the user
return value.get("created_by") == ctx.user.identity
资源和操作特定处理程序
@auth.on.threads.delete
async def prevent_thread_deletion(ctx: AuthContext, value: Any) -> bool:
# Only admins can delete threads
return "admin" in ctx.user.permissions
多个资源或操作
@auth.on(resources=["threads", "runs"], actions=["create", "update"])
async def rate_limit_writes(ctx: AuthContext, value: Any) -> bool:
# Implement rate limiting for write operations
return await check_rate_limit(ctx.user.identity)
store
资源的身份验证有点不同,因为其结构是开发人员定义的。您通常希望在命名空间中强制执行用户凭据。Y
authenticate ¶
注册身份验证处理函数。
身份验证处理程序负责验证凭据并返回用户范围。它可以按名称接受以下任何参数
- request (Request): The raw ASGI request object
- body (dict): The parsed request body
- path (str): The request path, e.g., "/threads/abcd-1234-abcd-1234/runs/abcd-1234-abcd-1234/stream"
- method (str): The HTTP method, e.g., "GET"
- path_params (dict[str, str]): URL path parameters, e.g., {"thread_id": "abcd-1234-abcd-1234", "run_id": "abcd-1234-abcd-1234"}
- query_params (dict[str, str]): URL query parameters, e.g., {"stream": "true"}
- headers (dict[bytes, bytes]): Request headers
- authorization (str | None): The Authorization header value (e.g., "Bearer <token>")
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
fn
|
AH
|
要注册的身份验证处理函数。必须返回用户的表示。这可以是:- 字符串(用户 ID)- 包含 {"identity": str, "permissions": list[str]} 的字典 - 或具有身份和权限属性的对象。权限可由您的下游处理程序选择性使用。 |
必需 |
返回
类型 | 描述 |
---|---|
AH
|
已注册的处理程序函数。 |
引发
类型 | 描述 |
---|---|
ValueError
|
如果已注册身份验证处理程序。 |
示例
基本令牌身份验证
@auth.authenticate
async def authenticate(authorization: str) -> str:
user_id = verify_token(authorization)
return user_id
接受完整的请求上下文
@auth.authenticate
async def authenticate(
method: str,
path: str,
headers: dict[str, bytes]
) -> str:
user = await verify_request(method, path, headers)
return user
返回用户名和权限
@auth.authenticate
async def authenticate(
method: str,
path: str,
headers: dict[str, bytes]
) -> Auth.types.MinimalUserDict:
permissions, user = await verify_request(method, path, headers)
# Permissions could be things like ["runs:read", "runs:write", "threads:read", "threads:write"]
return {
"identity": user["id"],
"permissions": permissions,
"display_name": user["name"],
}
LangGraph 的身份验证和授权类型。
此模块定义了 LangGraph 中用于身份验证、授权和请求处理的核心类型。它包括用户协议、身份验证上下文和各种 API 操作的类型化字典。
注意
所有 typing.TypedDict 类默认使用 total=False 使所有字段 typing.Optional。
类
名称 | 描述 |
---|---|
ThreadsCreate |
创建新线程的参数。 |
ThreadsRead |
读取线程状态或运行信息的参数。 |
ThreadsUpdate |
更新线程或运行的参数。 |
ThreadsDelete |
删除线程的参数。 |
ThreadsSearch |
搜索线程的参数。 |
RunsCreate |
创建运行的有效载荷。 |
AssistantsCreate |
创建助手的有效载荷。 |
AssistantsRead |
读取助手的有效载荷。 |
AssistantsUpdate |
更新助手的有效载荷。 |
AssistantsDelete |
删除助手的有效载荷。 |
AssistantsSearch |
搜索助手的有效载荷。 |
StoreGet |
通过命名空间和键检索特定项目的操作。 |
StoreSearch |
在指定命名空间层次结构中搜索项目的操作。 |
StoreListNamespaces |
列出和过滤存储中命名空间的操作。 |
StorePut |
在存储中存储、更新或删除项目的操作。 |
StoreDelete |
从存储中删除项目的操作。 |
on |
不同 API 操作的类型定义命名空间。 |
属性
名称 | 类型 | 描述 |
---|---|---|
MetadataInput |
附加到实体上的任意元数据的类型。 |
RunStatus module-attribute
¶
RunStatus = Literal[
"pending", "error", "success", "timeout", "interrupted"
]
运行执行状态。
值
- pending: 运行已排队或正在进行中
- error: 运行失败并出现错误
- success: 运行成功完成
- timeout: 运行超出时间限制
- interrupted: 运行被手动中断
MultitaskStrategy module-attribute
¶
MultitaskStrategy = Literal[
"reject", "rollback", "interrupt", "enqueue"
]
处理多个并发任务的策略。
值
- reject: 在任务进行中时拒绝新任务
- rollback: 取消当前任务并启动新任务
- interrupt: 中断当前任务并启动新任务
- enqueue: 将新任务排队在当前任务之后运行
OnConflictBehavior module-attribute
¶
OnConflictBehavior = Literal['raise', 'do_nothing']
遇到冲突时的行为。
值
- raise: 冲突时引发异常
- do_nothing: 静默忽略冲突
IfNotExists module-attribute
¶
IfNotExists = Literal['create', 'reject']
实体不存在时的行为。
值
- create: 创建实体
- reject: 拒绝操作
FilterType module-attribute
¶
FilterType = Union[
Dict[
str,
Union[str, Dict[Literal["$eq", "$contains"], str]],
],
Dict[str, str],
]
授权处理程序的响应类型。
支持精确匹配和运算符
- 精确匹配简写:{"field": "value"}
- 精确匹配:{"field": {"$eq": "value"}}
- 包含:{"field": {"$contains": "value"}}
ThreadStatus module-attribute
¶
ThreadStatus = Literal[
"idle", "busy", "interrupted", "error"
]
线程状态。
值
- idle: 线程可用
- busy: 线程正在处理中
- interrupted: 线程被中断
- error: 线程遇到错误
MetadataInput module-attribute
¶
HandlerResult module-attribute
¶
HandlerResult = Union[None, bool, FilterType]
处理程序的结果可以是: * None | True:接受请求。 * False:以 403 错误拒绝请求 * FilterType:要应用的过滤器
Authenticator module-attribute
¶
Authenticator = Callable[
...,
Awaitable[
Union[
MinimalUser,
str,
BaseUser,
MinimalUserDict,
Mapping[str, Any],
],
],
]
用于身份验证函数的类型。
身份验证器可以返回: 1. 字符串 (user_id) 2. 包含 {"identity": str, "permissions": list[str]} 的字典 3. 具有 identity 和 permissions 属性的对象
权限可供您的授权逻辑在下游使用,以确定对不同资源的访问权限。
如果函数签名中包含以下任何参数,authenticate 装饰器将自动按名称注入它们
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
请求 (request)
|
请求 (Request)
|
原始 ASGI 请求对象 |
必需 |
主体 (body)
|
|
解析后的请求主体 |
必需 |
路径 (path)
|
str
|
请求路径 |
必需 |
方法 (method)
|
str
|
HTTP 方法 (GET, POST, etc.) |
必需 |
路径参数 (path_params)
|
dict[str, str] | None
|
URL 路径参数 |
必需 |
查询参数 (query_params)
|
dict[str, str] | None
|
URL 查询参数 |
必需 |
headers
|
dict[str, bytes] | None
|
请求头 |
必需 |
授权 (authorization)
|
str | None
|
Authorization 头部值(例如 "Bearer |
必需 |
示例
带令牌的基本认证
from langgraph_sdk import Auth
auth = Auth()
@auth.authenticate
async def authenticate1(authorization: str) -> Auth.types.MinimalUserDict:
return await get_user(authorization)
多参数认证
@auth.authenticate
async def authenticate2(
method: str,
path: str,
headers: dict[str, bytes]
) -> Auth.types.MinimalUserDict:
# Custom auth logic using method, path and headers
user = verify_request(method, path, headers)
return user
接受原始 ASGI 请求
MY_SECRET = "my-secret-key"
@auth.authenticate
async def get_current_user(request: Request) -> Auth.types.MinimalUserDict:
try:
token = (request.headers.get("authorization") or "").split(" ", 1)[1]
payload = jwt.decode(token, MY_SECRET, algorithms=["HS256"])
except (IndexError, InvalidTokenError):
raise HTTPException(
status_code=401,
detail="Invalid token",
headers={"WWW-Authenticate": "Bearer"},
)
async with httpx.AsyncClient() as client:
response = await client.get(
f"https://api.myauth-provider.com/auth/v1/user",
headers={"Authorization": f"Bearer {MY_SECRET}"}
)
if response.status_code != 200:
raise HTTPException(status_code=401, detail="User not found")
user_data = response.json()
return {
"identity": user_data["id"],
"display_name": user_data.get("name"),
"permissions": user_data.get("permissions", []),
"is_authenticated": True,
}
MinimalUser ¶
MinimalUserDict ¶
基类:TypedDict
用户的字典表示。
属性
名称 | 类型 | 描述 |
---|---|---|
身份 (identity) |
必填[str]
|
用户必需的唯一标识符。 |
显示名称 (display_name) |
str
|
用户的可选显示名称。 |
已认证 (is_authenticated) |
bool
|
用户是否已认证。默认为 True。 |
权限 (permissions) |
表示命名空间路径的字符串列表。
|
与用户关联的权限列表。 |
BaseUser ¶
基类:Protocol
基础 ASGI 用户协议
方法
名称 | 描述 |
---|---|
__getitem__ |
从您的最小用户字典中获取一个键。 |
__contains__ |
检查属性是否存在。 |
__iter__ |
迭代用户的键。 |
属性
名称 | 类型 | 描述 |
---|---|---|
已认证 (is_authenticated) |
bool
|
用户是否已认证。 |
显示名称 (display_name) |
str
|
用户的显示名称。 |
身份 (identity) |
str
|
用户的唯一标识符。 |
权限 (permissions) |
表示命名空间路径的字符串列表。
|
与用户关联的权限。 |
StudioUser ¶
一个从 LangGraph 工作室认证请求中填充的用户对象。
注意:Studio 认证可以在您的 langgraph.json
配置中禁用。
您可以在授权处理程序 (@auth.on
) 中使用 isinstance
检查,以专门控制从 LangGraph Studio UI 访问实例的开发人员的访问权限。
示例
BaseAuthContext ¶
AuthContext ¶
完整的认证上下文,包含资源和操作信息。
扩展 BaseAuthContext,包含正在访问的特定资源和操作,允许进行细粒度的访问控制决策。
属性
名称 | 类型 | 描述 |
---|---|---|
资源 (resource) |
Literal['runs', 'threads', 'crons', 'assistants', 'store']
|
正在访问的资源。 |
CancelAction |
Literal['create', 'read', 'update', 'delete', 'search', 'create_run', 'put', 'get', 'list_namespaces']
|
对资源执行的操作。 |
权限 (permissions) |
表示命名空间路径的字符串列表。
|
授予已认证用户的权限。 |
用户 (user) |
BaseUser
|
已认证的用户。 |
resource instance-attribute
¶
resource: Literal[
"runs", "threads", "crons", "assistants", "store"
]
正在访问的资源。
action instance-attribute
¶
action: Literal[
"create",
"read",
"update",
"delete",
"search",
"create_run",
"put",
"get",
"list_namespaces",
]
对资源执行的操作。
大多数资源支持以下操作:- create:创建新资源 - read:读取资源信息 - update:更新现有资源 - delete:删除资源 - search:搜索资源
存储支持以下操作:- put:在存储中添加或更新文档 - get:从存储中获取文档 - list_namespaces:列出存储中的命名空间
ThreadsCreate ¶
基类:TypedDict
创建新线程的参数。
示例
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
UUID
|
线程的唯一标识符。 |
metadata |
MetadataInput
|
要附加到线程的可选元数据。 |
if_exists |
OnConflictBehavior
|
当具有相同 ID 的线程已存在时的行为。 |
ThreadsRead ¶
基类:TypedDict
读取线程状态或运行信息的参数。
此类型用于三种上下文: 1. 读取线程、线程版本或线程状态信息:仅提供 thread_id 2. 读取运行信息:提供 thread_id 和 run_id
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
UUID
|
线程的唯一标识符。 |
要获取的运行 ID。 |
可选[UUID]
|
用于筛选的运行 ID。仅在读取线程内的运行信息时使用。 |
ThreadsUpdate ¶
基类:TypedDict
更新线程或运行的参数。
用于更新线程、线程版本或取消运行。
属性
名称 | 类型 | 描述 |
---|---|---|
要获取的线程 ID。 |
UUID
|
线程的唯一标识符。 |
metadata |
MetadataInput
|
要更新的可选元数据。 |
CancelAction |
可选[Literal['interrupt', 'rollback']]
|
对线程执行的可选操作。 |
ThreadsDelete ¶
ThreadsSearch ¶
基类:TypedDict
搜索线程的参数。
用于搜索线程或运行。
属性
名称 | 类型 | 描述 |
---|---|---|
metadata |
MetadataInput
|
用于筛选的可选元数据。 |
要过滤的状态值。 |
MetadataInput
|
用于筛选的可选值。 |
可选[ThreadStatus] |
可选[ThreadStatus]
|
用于筛选的可选状态。 |
limit |
int
|
返回结果的最大数量。 |
offset |
int
|
分页的偏移量。 |
要获取的线程 ID。 |
可选[UUID]
|
用于筛选的可选线程 ID。 |
RunsCreate ¶
基类:TypedDict
创建运行的有效载荷。
示例
create_params = {
"assistant_id": UUID("123e4567-e89b-12d3-a456-426614174000"),
"thread_id": UUID("123e4567-e89b-12d3-a456-426614174001"),
"run_id": UUID("123e4567-e89b-12d3-a456-426614174002"),
"status": "pending",
"metadata": {"owner": "user123"},
"prevent_insert_if_inflight": True,
"multitask_strategy": "reject",
"if_not_exists": "create",
"after_seconds": 10,
"kwargs": {"key": "value"},
"action": "interrupt"
}
属性
名称 | 类型 | 描述 |
---|---|---|
assistant_id |
可选[UUID]
|
此运行要使用的可选助手 ID。 |
要获取的线程 ID。 |
可选[UUID]
|
此运行要使用的可选线程 ID。 |
要获取的运行 ID。 |
可选[UUID]
|
此运行要使用的可选运行 ID。 |
可选[ThreadStatus] |
可选[RunStatus]
|
此运行的可选状态。 |
metadata |
MetadataInput
|
此运行的可选元数据。 |
阻止插入新的运行(如果已有一个正在进行中)。 |
bool
|
此运行的多任务策略。 |
可选[MultitaskStrategy] |
MultitaskStrategy
|
此运行的 IfNotExists。 |
可选[IfNotExists] |
IfNotExists
|
创建运行前等待的秒数。 |
可选[int] |
int
|
kwargs |
Dict[str, Any] |
传递给运行的关键字参数。
|
更新现有运行时的操作。 |
CancelAction |
可选[Literal['interrupt', 'rollback']]
|
|
助手的唯一标识符。
基类:TypedDict
创建助手的有效载荷。
示例
属性
名称 | 类型 | 描述 |
---|---|---|
assistant_id |
UUID
|
此助手要使用的图 ID。 |
graph_id |
str
|
|
config |
助手的可选配置。
|
要附加到助手的可选元数据。 |
metadata |
MetadataInput
|
当具有相同 ID 的助手已存在时的行为。 |
if_exists |
OnConflictBehavior
|
助手的名称。 |
name |
str
|
|
assistant_id instance-attribute
¶
基类:TypedDict
读取助手的有效载荷。
示例
属性
名称 | 类型 | 描述 |
---|---|---|
assistant_id |
UUID
|
此助手要使用的图 ID。 |
metadata |
MetadataInput
|
用于筛选的可选元数据。 |
要更新的可选图 ID。
assistant_id instance-attribute
¶
用于筛选的可选图 ID。
创建 Cron 作业的有效载荷。
基类:TypedDict
Cron 作业的有效载荷。
示例
属性
名称 | 类型 | 描述 |
---|---|---|
payload |
传递给运行的关键字参数。
|
Cron 作业的调度。 |
执行此任务的 cron 调度。 |
str
|
Cron 作业的可选唯一标识符。 |
要删除的定时任务 ID。 |
可选[UUID]
|
此 Cron 作业要使用的可选线程 ID。 |
要获取的线程 ID。 |
可选[UUID]
|
用户 ID (user_id) |
此 Cron 作业要使用的可选用户 ID。 |
可选[str]
|
Cron 作业的可选结束时间。 |
end_time |
可选[datetime]
|
|
删除 Cron 作业的有效载荷。
读取 Cron 作业的有效载荷。
更新 Cron 作业的有效载荷。
基类:TypedDict
示例
属性
名称 | 类型 | 描述 |
---|---|---|
要删除的定时任务 ID。 |
UUID
|
|
payload |
要更新的可选有效载荷。
|
要更新的可选调度。 |
执行此任务的 cron 调度。 |
可选[str]
|
|
搜索 Cron 作业的有效载荷。
定义搜索范围的前缀过滤器。
可选[元组[str, ...]]
基类:TypedDict
列出和过滤存储中命名空间的操作。
属性
名称 | 类型 | 描述 |
---|---|---|
namespace |
前缀过滤命名空间。
|
筛选命名空间的可选条件。 |
表示要过滤命名空间的后缀的可选字符串列表。 |
前缀过滤命名空间。
|
返回的命名空间层级最大深度。 |
指定要返回的命名空间最大深度的可选整数。 |
运行开始前等待的秒数。用于安排未来的运行。
|
返回的命名空间最大数量。 |
limit |
int
|
为分页跳过的命名空间数量。 |
offset |
int
|
|
标识项目位置的分层路径。
namespace instance-attribute
¶
此类别组织了不同资源(线程、助手、cron)上创建、读取、更新、删除和搜索操作的类型定义。
不同 API 操作的类型定义命名空间。
用法
线程相关操作的类型。
from langgraph_sdk import Auth
auth = Auth()
@auth.on
def handle_all(params: Auth.on.value):
raise Exception("Not authorized")
@auth.on.threads.create
def handle_thread_create(params: Auth.on.threads.create.value):
# Handle thread creation
pass
@auth.on.assistants.search
def handle_assistant_search(params: Auth.on.assistants.search.value):
# Handle assistant search
pass
类
名称 | 描述 |
---|---|
threads |
助手相关操作的类型。 |
assistants |
Cron 相关操作的类型。 |
crons |
存储相关操作的类型。 |
store |
|
线程创建参数的类型。
助手创建参数的类型。
Cron 创建参数的类型。
身份验证系统中使用的异常。
类
名称 | 描述 |
---|---|
您可以抛出的 HTTP 异常,以返回特定的 HTTP 错误响应。 |
|
基类:Exception
由于此异常在认证模块中定义,我们默认状态码为 401。
HTTPException ¶
状态码 (status_code)
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
错误的 HTTP 状态码。默认为 401 "Unauthorized"(未经授权)。
|
int
|
详细信息 (detail) |
401
|
详细错误信息。如果为 None,则根据状态码使用默认信息。
|
可选[str]
|
无
|
|
headers
|
要在错误响应中包含的额外 HTTP 头部。
|
添加头部 |
无
|
示例
默认
自定义错误
raise HTTPException(headers={"X-Custom-Header": "Custom Value"})
# HTTPException(status_code=401, detail='Unauthorized', headers={"WWW-Authenticate": "Bearer"})
返回顶部