分支智能体是Blades框架中用于实现条件分支逻辑的核心组件,它允许根据运行时条件动态选择执行路径,基于条件函数的返回值从多个可执行任务中选择一个来执行。这种模式非常适合需要根据不同输入或状态采取不同行动的场景。
分支智能体结构如下:
type Branch struct { condition BranchCondition runners map[string]blades.Runnable}Branch 包含两个参数:分支条件函数 (BranchCondition) 和可执行任务映射 (runners)。
func(ctx context.Context, input *blades.Prompt) (string, error)map[string]blades.Runnable以下介绍了分支智能体的使用方法。
condition := func(ctx context.Context, input *blades.Prompt) (string, error) { if input.Latest().Text() == "positive" { return "positive_branch", nil } return "default_branch", nil}runners := map[string]blades.Runnable{ "positive_branch": flow.NewSequential( // positive handling ), "default_branch": flow.NewSequential( // default handling ),}branch := flow.NewBranch(condition, runners)result, err := branch.Run(context.Background(), prompt)func main() { condition := func(ctx context.Context, input *blades.Prompt) (string, error) { latest := input.Latest() if latest == nil { return "default", nil }
text := latest.Text() switch { case strings.Contains(text, "help"): return "help", nil case strings.Contains(text, "order"): return "order", nil default: return "general", nil } }
runners := map[string]blades.Runnable{ "help": flow.NewSequential( // handle help ), "order": flow.NewSequential( // handle order ), "general": flow.NewSequential( // handle general ), }
branch := flow.NewBranch(condition, runners) result, err := branch.Run(ctx, prompt)}