SuperAPI AI 工具集

langgraph-streaming

智能体与模型

查看项目

更新于 10-16 06:05

技能介绍

用途

LangGraph Streaming 用于为 LangGraph 工作流提供实时更新与进度追踪能力,适用于实现进度指示器、Token 流式输出、自定义事件以及实时用户反馈等场景。

主要能力

五种流模式

通过 graph.stream(inputs, stream_mode=[...]) 可选择以下模式:

  • values:每步之后的完整状态,用于调试与状态检查。
  • updates:每步之后的状态增量,用于高效的 UI 更新。
  • messages:LLM Token 及元数据,用于聊天界面与打字指示器。
  • custom:用户自定义事件,用于进度条与状态更新。
  • debug:最大信息量,用于开发与故障排查。

自定义事件(StreamWriter)

使用 from langgraph.config import get_stream_writer 获取 writer,在节点内发出自定义进度事件,例如 {"type": "progress", "current": i + 1, "total": len(state["items"]), "status": f"Processing {item}"},以及完成事件 {"type": "complete", "message": "All items processed"}。消费时可在 stream_mode=["updates", "custom"] 下按 mode 与 chunk 的 type 字段分别处理。

LLM Token 流式输出

使用 stream_mode="messages" 可逐块输出 LLM Token,例如遍历 (message_chunk, metadata) 并打印 message_chunk.content。可按节点过滤(meta["langgraph_node"] == "writer_agent"),也可按标签过滤(在 init_chat_model 中设置 tags=["main_response"],再检查 meta.get("tags", []))。

子图流式输出

设置 subgraphs=True 并配合 stream_mode="updates",可通过 namespace 查看图层级,例如 ()、("child",)、("child", "grandchild")。

同时使用多种模式

可在 astream 中传入 stream_mode=["updates", "custom", "messages"],并用 match 分别处理 update_ui_state、show_progress、append_to_chat。

非 LangChain LLM 流式输出

在节点内获取 writer,遍历自定义流式客户端的输出,发出 {"type": "llm_token", "content": chunk.text} 事件。

FastAPI SSE 集成

提供 /stream 端点示例:在 event_generator 中异步遍历 graph.astream(request.inputs, stream_mode=["updates", "custom"]),以 data: {json.dumps({'mode': mode, 'data': chunk})}\n\n 格式产出,并返回 StreamingResponse(..., media_type="text/event-stream")。

Python < 3.11 异步

需手动传播配置:在节点函数中接收 config: RunnableConfig 并传给 model.ainvoke;也可显式注入 writer: StreamWriter 后调用 writer({"status": "processing"})。

使用方式

按需选择流模式:多数 UI 推荐 ["updates", "custom"];Token 流式输出使用 messages 模式并按节点过滤;进度追踪使用 custom 模式配合 get_stream_writer();复杂工作流启用 subgraphs=True。

适用场景

聊天界面与打字指示器、进度条与状态更新、复杂嵌套工作流的进度追踪与调试、通过 SSE 向浏览器推送实时事件。

限制与常见错误

  • 忘记设置 stream_mode 参数(默认仅 values)。
  • 在 Python < 3.11 中未正确处理异步。
  • print 未设置 flush=True,导致无法实时显示。
  • 未按节点或标签过滤 messages,输出嘈杂。

相关技能

langgraph-subgraphs、langgraph-human-in-loop、langgraph-supervisor、langgraph-parallel、langgraph-tools、api-design-framework。评估测试用例见 references/evaluations.md。