循环智能体是Blades框架中用于实现循环执行逻辑的核心组件,循环智能体基于条件函数的返回值决定是否继续执行某个任务。这种模式非常适合需要重复处理直到达成目标的场景。
循环智能体具体结构如下:
type Loop struct { maxIterations int condition LoopCondition runner blades.Runnable}Loop共包含3个参数,分别为循环条件函数(condition)、可执行任务(runner)和最大迭代次数(maxIterations)。
func(ctx context.Context, output *blades.Message) (bool, error)type Runnable interface { Run(context.Context, *Prompt, ...ModelOption) (*Message, error) RunStream(context.Context, *Prompt, ...ModelOption) (Streamable[*Message], error)}intcondition := func(ctx context.Context, output *blades.Message) (bool, error) { // judge whether to continue loop return !strings.Contains(output.Text(), "completed"), nil}task := flow.NewSequential( // loop task)loop := flow.NewLoop(condition, task, flow.WithLoopMaxIterations(5))result, err := loop.Run(context.Background(), prompt)func main() { // define loop condition function condition := func(ctx context.Context, output *blades.Message) (bool, error) { // if output contains "continue", continue loop return strings.Contains(output.Text(), "continue"), nil }
// define the task to be executed repeatedly task := flow.NewSequential( // task implementation )
// create loop agent with max iterations set to 5 loop := flow.NewLoop( condition, task, flow.WithLoopMaxIterations(5), )
// execute loop task result, err := loop.Run(ctx, prompt) if err != nil { log.Printf("loop execution error: %v", err) return }
log.Printf("loop execution completed, final result: %s", result.Text())}