Tutorial 5: 流式处理

流式范式概览

Eino 的编排图支持四种执行范式,覆盖「输入/输出是否为流」的四种组合:

范式

输入

输出

说明

Invoke

I

O

非流输入 → 非流输出

Stream

I

StreamReader[O]

非流输入 → 流式输出

Collect

StreamReader[I]

O

流式输入 → 非流输出(收集后一次返回)

Transform

StreamReader[I]

StreamReader[O]

流式输入 → 流式输出

参考:Eino Streaming EssentialsDeepWiki Streaming Paradigms

框架的流式行为

运行时会对流做自动处理,使组件可以按「非流」接口编写,仍参与流式图:

  • Concatenate:下游需要「完整数据」时才消费(如 ToolsNode 需收齐 tool_calls 再执行),流会被拼接后再传。

  • Box:非流输出被「装箱」成单元素流,以便与流式节点衔接。

  • Copy:同一流可被复制给多个消费者(如回调与下游节点)。

  • Merge:多路流汇入同一节点时合并。

因此你可以混合「流式节点」与「非流式节点」,由框架保证数据流正确。

使用场景

  • Invoke:同步调用,适合简单查询、批量任务。

  • Stream:LLM 逐 token 输出、日志/监控实时展示。

  • Collect:从外部流式源(如 SSE)读入,聚合成一条消息再进模型。

  • Transform:管道式处理流(如解码 → 过滤 → 再编码)。

文档:Stream Processing Internals

小结

  • 四种范式:Invoke / Stream / Collect / Transform,覆盖输入输出是否流式。

  • 运行时负责拼接、装箱、复制、合并,便于混合流式与非流式节点。

  • 详细实现见 Eino Streaming Essentials 与 DeepWiki。

下一节将介绍 ReAct Agent:在图中实现「推理 + 工具调用」循环。