流式传输¶
流式传输对于让大型语言模型(LLM)应用对终端用户感觉更具响应性至关重要。
创建流式运行任务时,流式传输模式决定了哪些类型的数据会流式传输回 API 客户端。
支持的流式传输模式¶
LangGraph 平台支持以下流式传输模式
模式 | 描述 | LangGraph 库方法 |
---|---|---|
值 |
在每个超级步骤之后,流式传输完整的图状态。 指南 | .stream() / .astream() with stream_mode="values" |
更新 |
仅流式传输每个节点之后图状态的更新。 指南 | .stream() / .astream() with stream_mode="updates" |
消息元组 |
流式传输图内生成的任何消息的 LLM 令牌(对于聊天应用很有用)。 指南 | .stream() / .astream() with stream_mode="messages" |
调试 |
在图执行过程中流式传输调试信息。 指南 | .stream() / .astream() with stream_mode="debug" |
自定义 |
流式传输自定义数据。 指南 | .stream() / .astream() with stream_mode="custom" |
事件 |
流式传输所有事件(包括图的状态);主要在迁移大型 LCEL 应用时有用。 指南 | .astream_events() |
✅ 您还可以同时组合多种模式。有关配置详情,请参阅操作指南。
无状态运行¶
如果您不想将流式运行的输出持久化到检查点数据库中,则可以创建无状态运行而无需创建线程
from langgraph_sdk import get_client
client = get_client(url=<DEPLOYMENT_URL>, api_key=<API_KEY>)
async for chunk in client.runs.stream(
None, # (1)!
assistant_id,
input=inputs,
stream_mode="updates"
):
print(chunk.data)
- 我们传入
None
而不是thread_id
UUID。
import { Client } from "@langchain/langgraph-sdk";
const client = new Client({ apiUrl: <DEPLOYMENT_URL>, apiKey: <API_KEY> });
// create a streaming run
const streamResponse = client.runs.stream(
null, // (1)!
assistantID,
{
input,
streamMode: "updates"
}
);
for await (const chunk of streamResponse) {
console.log(chunk.data);
}
- 我们传入
None
而不是thread_id
UUID。
加入并流式传输¶
LangGraph 平台允许您加入一个活跃的后台运行并从中流式传输输出。为此,您可以使用 LangGraph SDK 的 client.runs.join_stream
方法
from langgraph_sdk import get_client
client = get_client(url=<DEPLOYMENT_URL>, api_key=<API_KEY>)
async for chunk in client.runs.join_stream(
thread_id,
run_id, # (1)!
):
print(chunk)
- 这是您要加入的现有运行的
run_id
。
输出未缓冲
当您使用 .join_stream
时,输出不会被缓冲,因此在加入之前产生的任何输出都将不会被接收。
API 参考¶
有关 API 用法和实现,请参阅API 参考。