无状态运行¶
大多数情况下,当你运行图时,会提供一个 thread_id
给客户端,以便通过 LangGraph Cloud 实现的持久化状态来跟踪之前的运行情况。然而,如果你不需要持久化这些运行记录,则可以不使用内置的持久化状态,并创建无状态运行。
设置¶
首先,让我们设置我们的客户端:
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
:
let input = {
messages: [
{ role: "user", content: "你好!我的名字叫巴加图尔,我今年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\": \"你好!我的名字叫巴加图尔,我今年26岁。\"}]},
\"stream_mode\": [
\"updates\"
]
}" | jq -c 'select(.data and (.data | has("run_id") | not)) | .data'
输出:
{'agent': {'messages': [{'content': "你好巴加图尔!很高兴见到你。感谢您介绍自己并分享您的年龄。您是否有什么具体的问题或话题想要讨论?我很乐意帮助解答您的问题或探讨您感兴趣的议题。", '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
函数来等待无状态的结果,如下所示:
输出:
{
'messages': [
{
'content': '你好!我的名字是巴加图尔,我今年26岁。',
'additional_kwargs': {},
'response_metadata': {},
'type': 'human',
'name': None,
'id': '5e088543-62c2-43de-9d95-6086ad7f8b48',
'example': False},
{
'content': "你好巴加图尔!很高兴见到你。感谢你自我介绍并分享你的年龄。你是否有特定的问题想要了解或讨论?我在这里帮助解答任何问题或探讨任何话题。",
'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
}
]
}