Skip to content
目录

Streaming 和 Observability ​

LangGraph 在 invoke 之外提供 stream,按模式推送超步更新、节点输出、LLM token 等,便于 UI 与调试。


1. 为何需要 Stream ​

批量 invokestream
结束才见结果实时进度、token
难做中断展示配合 interrupt UI

2. 常见 stream 模式(概念) ​

模式推送内容(语义)
values每超步后完整 state 快照
updates每节点产生的 state 增量
messagesLLM 消息流(与 LCEL 集成)
debug更细粒度调试事件
custom节点内 getWriter() 自定义块

以当前 streamMode 文档为准,可多选组合。


3. 实现要点 ​

  • 引擎在超步/节点边界往 async queue 塞事件。
  • 消费者 async iterator 拉取直到图结束或 interrupt。
  • 与 checkpointer 独立:stream 不断言持久化,除非同时写 checkpoint。

4. streamEvents ​

与 LangChain v2 events 对齐的细粒度事件(chain_start、tool_end 等),适合全链路追踪。
注意与 stream 的 mode 区分,不要混用两套 API 于同一调用。


5. 可观测性 ​

  • LangSmith 等:传入 callbacks / tracing 配置。
  • 图级 metadata:config.configurable 传 thread、user。
  • 日志:节点内结构化 log + superstep id。

6. interrupt 时的流 ​

interrupt 暂停后 stream 结束当前迭代;resume 后新 stream 或继续 invoke 获取后续事件。


7. 总结 ​

Stream = 把 Pregel 内部事件暴露给外部;UI 常用 updates + messages,调试用 debug。

MIT License.