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.