跳转到内容

顺序智能体

顺序智能体是Blades框架中用于实现顺序执行逻辑的核心组件,它允许按预定顺序依次执行多个任务,前一个任务的输出作为后一个任务的输入,这种模式非常适合需要步骤化处理的线性业务流程。

type Sequential struct {
runners []blades.Runnable
}

Sequential结构体只包含一个runners参数。

  • 类型:
type Runnable interface {
Run(context.Context, *Prompt, ...ModelOption) (*Message, error)
RunStream(context.Context, *Prompt, ...ModelOption) (Streamable[*Message], error)
}
  • 作用: 需要按顺序执行的任务列表
  • 特点: 每个任务都可以是任何实现了Runnable接口的对象
  • 线性执行流程: 顺序智能体严格按照任务列表的顺序执行,确保每个步骤都在前一个步骤完成后才开始。
  • 自动数据传递: 前一个任务的输出会自动成为下一个任务的输入,形成自然的数据流水线。
  • 统一错误处理: 任何一个任务执行失败都会立即中断整个流程并返回错误,确保流程的一致性。
  • 任务组合能力: 支持任意实现了Runnable接口的任务,包括其他流程控制器(分支、并行、循环等)。
tasks := []blades.Runnable{
// step 1
flow.NewSequential(...),
// step 2
flow.NewSequential(...),
// step 3
flow.NewSequential(...),
}
sequential := flow.NewSequential(tasks...)
result, err := sequential.Run(context.Background(), prompt)

在运行此代码之前,请确保您已经正确配置了API密钥。

// define tasks
tasks := []blades.Runnable{
// step 1: data validation
flow.NewSequential(
// validation task implementation
),
// step 2: data processing
flow.NewSequential(
// processing task implementation
),
// step 3: result generation
flow.NewSequential(
// generation task implementation
),
}
// create sequential agent
sequential := flow.NewSequential(tasks...)
// sequential execution
result, err := sequential.Run(ctx, prompt)
if err != nil {
log.Printf("sequential execution error: %v", err)
return
}
log.Printf("sequential execution completed, final result: %s", result.Text())