67ee76e58d
Deploy Slides / build-and-deploy (push) Successful in 1m8s
- Add 5 new slide pages: eino-deep-dive, ratelimit-overview, ratelimit-lua, async-deep-dive, harness - Add 4 new drawio SVGs: pipeline-detail, ratelimit, async-task, harness - Update all existing slides with v-clicks progressive reveal - Add presenter notes and interactive prompts - Expand slides.md to register all new pages (16 → 25+ slides) - Fix text overflow by trimming content per Item block - Add Eino Graph deep dive: WithGenLocalState, Pre/Post Handler, branch routing - Add rate limiting section: algorithm comparison, Lua script, Gin middleware - Add async task deep dive: TaskQueue FIFO, context progress injection - Add consistency section: style/pipeline/data/deployment 4-layer guarantees
2.1 KiB
2.1 KiB
Eino Graph 深入 — 构建与编排
有向图构建与本地状态管理
g := compose.NewGraph[PipelineInput, PipelineOutput](
compose.WithGenLocalState(func(ctx context.Context) *PipelineState {
return &PipelineState{} // 每次调用获得全新状态
}),
)
g.AddLambdaNode(nodePromptOptimizer, &compose.Lambda{
StatePreHandler: preparePromptInput, // 从 state 读取输入
StatePostHandler: storePromptOutput, // 结果写回 state
})
Eino Graph 深入 — 分支路由与重试
QualitySupervisor 驱动的条件分支
g.AddBranch(nodeQualitySupervisor, compose.NewGraphBranch(
func(ctx context.Context, _ PipelineInput) (string, error) {
var next string
_ = compose.ProcessState[*PipelineState](ctx,
func(_ context.Context, state *PipelineState) error {
next = state.NextNode // 质检结果决定路由
return nil
})
return next, nil
},
map[string]bool{
nodePromptOptimizer: true,
nodeFormatAdapter: true,
},
))