thread_id,以便通过 LangSmith 部署中实现的持久状态来跟踪之前的运行。但是,如果你不需要持久化运行,那么就不需要使用内置的持久状态,并且可以创建无状态运行。
设置
首先,让我们来设置我们的客户端:- Python
- Javascript
- cURL
from langgraph_sdk import get_client
client = get_client(url=<DEPLOYMENT_URL>)
# 使用名为"agent"的已部署图
assistant_id = "agent"
import { Client } from "@langchain/langgraph-sdk";
const client = new Client({ apiUrl: <DEPLOYMENT_URL> });
// 使用名为"agent"的已部署图
const assistantId = "agent";
curl --request POST \
--url <DEPLOYMENT_URL>/assistants/search \
--header 'Content-Type: application/json' \
--data '{
"limit": 10,
"offset": 0
}' | jq -c 'map(select(.config == null or .config == {})) | .[0].graph_id' && \
curl --request POST \
--url <DEPLOYMENT_URL>/threads \
--header 'Content-Type: application/json' \
--data '{}'
无状态流式传输
我们可以以几乎与从具有状态属性的运行中进行流式传输相同的方式,流式传输无状态运行的结果,但是我们不向thread_id 参数传递一个值,而是传递 None:
- Python
- Javascript
- cURL
input = {
"messages": [
{"role": "user", "content": "你好!我叫 Bagatur,今年 26 岁。"}
]
}
async for chunk in client.runs.stream(
# 不传入 thread_id,流将是无状态的
None,
assistant_id,
input=input,
stream_mode="updates",
):
if chunk.data and "run_id" not in chunk.data:
print(chunk.data)
let input = {
messages: [
{ role: "user", content: "你好!我叫 Bagatur,今年 26 岁。" }
]
};
const streamResponse = client.runs.stream(
// 不传入 thread_id,流将是无状态的
null,
assistantId,
{
input,
streamMode: "updates"
}
);
for await (const chunk of streamResponse) {
if (chunk.data && !("run_id" in chunk.data)) {
console.log(chunk.data);
}
}
curl --request POST \
--url <DEPLOYMENT_URL>/runs/stream \
--header 'Content-Type: application/json' \
--data "{
\"assistant_id\": \"agent\",
\"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"你好!我叫 Bagatur,今年 26 岁。\"}]},
\"stream_mode\": [
\"updates\"
]
}" | jq -c 'select(.data and (.data | has("run_id") | not)) | .data'
{'agent': {'messages': [{'content': '你好 Bagatur!很高兴认识你。谢谢你介绍自己并分享你的年龄。有什么你想了解或讨论的具体事情吗?我在这里可以帮助你解决任何你感兴趣的问题或话题。', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-489ec573-1645-4ce2-a3b8-91b391d50a71', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}
等待无状态结果
除了流式传输,你还可以通过使用.wait 函数来等待无状态结果,如下所示:
- Python
- Javascript
- cURL
stateless_run_result = await client.runs.wait(
None,
assistant_id,
input=input,
)
print(stateless_run_result)
let statelessRunResult = await client.runs.wait(
null,
assistantId,
{ input: input }
);
console.log(statelessRunResult);
curl --request POST \
--url <DEPLOYMENT_URL>/runs/wait \
--header 'Content-Type: application/json' \
--data '{
"assistant_id": <ASSISTANT_IDD>,
}'
{
'messages': [
{
'content': '你好!我叫 Bagatur,今年 26 岁。',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': '5e088543-62c2-43de-9d95-6086ad7f8b48',
'example': False
},
{
'content': '你好 Bagatur!很高兴认识你。谢谢你介绍自己并分享你的年龄。有什么你想了解或讨论的具体事情吗?我在这里可以帮助你解决任何你感兴趣的问题或话题。',
'additional_kwargs': {},
'response_metadata': {},
'type': 'ai',
'name': None,
'id': 'run-d6361e8d-4d4c-45bd-ba47-39520257f773',
'example': False,
'tool_calls': [],
'invalid_tool_calls': [],
'usage_metadata': None
}
]
}
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

