Tutorial 5: 流式处理
流式范式概览
Eino 的编排图支持四种执行范式,覆盖「输入/输出是否为流」的四种组合:
范式 |
输入 |
输出 |
说明 |
|---|---|---|---|
Invoke |
I |
O |
非流输入 → 非流输出 |
Stream |
I |
StreamReader[O] |
非流输入 → 流式输出 |
Collect |
StreamReader[I] |
O |
流式输入 → 非流输出(收集后一次返回) |
Transform |
StreamReader[I] |
StreamReader[O] |
流式输入 → 流式输出 |
框架的流式行为
运行时会对流做自动处理,使组件可以按「非流」接口编写,仍参与流式图:
Concatenate:下游需要「完整数据」时才消费(如 ToolsNode 需收齐 tool_calls 再执行),流会被拼接后再传。
Box:非流输出被「装箱」成单元素流,以便与流式节点衔接。
Copy:同一流可被复制给多个消费者(如回调与下游节点)。
Merge:多路流汇入同一节点时合并。
因此你可以混合「流式节点」与「非流式节点」,由框架保证数据流正确。
使用场景
Invoke:同步调用,适合简单查询、批量任务。
Stream:LLM 逐 token 输出、日志/监控实时展示。
Collect:从外部流式源(如 SSE)读入,聚合成一条消息再进模型。
Transform:管道式处理流(如解码 → 过滤 → 再编码)。
小结
四种范式:Invoke / Stream / Collect / Transform,覆盖输入输出是否流式。
运行时负责拼接、装箱、复制、合并,便于混合流式与非流式节点。
详细实现见 Eino Streaming Essentials 与 DeepWiki。
下一节将介绍 ReAct Agent:在图中实现「推理 + 工具调用」循环。