跳转到内容

顺序流程

CrewAI 提供了一个灵活的框架,用于以结构化方式执行任务,同时支持顺序流程和层级流程。 本指南概述了如何有效实现这些流程,以确保高效完成任务和项目。

顺序流程确保任务一个接一个地执行,遵循线性推进。 这种方法非常适合需要按特定顺序完成任务的项目。

  • 线性任务流:通过按预定顺序处理任务,确保有序推进。
  • 简单性:最适合步骤清晰、按部就班的项目。
  • 易于监控:便于跟踪任务完成情况和项目进度。

要使用顺序流程,请组建你的 crew,并按执行顺序定义任务。

from crewai import Crew, Process, Agent, Task, TaskOutput, CrewOutput
# Define your agents
researcher = Agent(
role='Researcher',
goal='Conduct foundational research',
backstory='An experienced researcher with a passion for uncovering insights'
)
analyst = Agent(
role='Data Analyst',
goal='Analyze research findings',
backstory='A meticulous analyst with a knack for uncovering patterns'
)
writer = Agent(
role='Writer',
goal='Draft the final report',
backstory='A skilled writer with a talent for crafting compelling narratives'
)
# Define your tasks
research_task = Task(
description='Gather relevant data...',
agent=researcher,
expected_output='Raw Data'
)
analysis_task = Task(
description='Analyze the data...',
agent=analyst,
expected_output='Data Insights'
)
writing_task = Task(
description='Compose the report...',
agent=writer,
expected_output='Final Report'
)
# Form the crew with a sequential process
report_crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research_task, analysis_task, writing_task],
process=Process.sequential
)
# Execute the crew
result = report_crew.kickoff()
# Accessing the type-safe output
task_output: TaskOutput = result.tasks[0].output
crew_output: CrewOutput = result.output

顺序流程中的每个任务必须分配一个代理。请确保每个 Task 都包含 agent 参数。

  1. 初始任务:在顺序流程中,第一个代理完成自己的任务并表示完成。
  2. 后续任务:代理会根据流程类型接手各自的任务,并在前序任务结果或指令的引导下执行。
  3. 完成:当最后一个任务执行完毕后,流程结束,项目也随之完成。

在顺序流程中,如果某个代理将 allow_delegation 设置为 True,它可以把任务委派给 crew 中的其他代理。 当 crew 中存在多个代理时,此功能会自动配置完成。

任务可以异步执行,在适合的情况下实现并行处理。 要创建异步任务,请在定义任务时将 async_execution=True

CrewAI 同时支持记忆和缓存功能:

  • 记忆:在创建 Crew 时设置 memory=True 即可启用。这允许代理在任务之间保留信息。
  • 缓存:默认启用缓存。将 cache=False 可将其关闭。

你可以在任务级别和步骤级别同时设置回调:

  • task_callback:在每个任务完成后执行。
  • step_callback:在代理执行过程中的每一步后执行。

CrewAI 会跟踪所有任务和代理的 token 使用情况。你可以在执行后访问这些指标。

  1. 顺序很重要:按逻辑顺序组织任务,让每个任务都建立在前一个任务的基础上。
  2. 清晰的任务描述:为每个任务提供详细说明,以便代理有效执行。
  3. 合适的代理选择:将代理的技能和角色与每个任务的需求匹配起来。
  4. 利用上下文:借助前序任务的上下文来指导后续任务。

这份更新后的文档确保细节准确反映代码库中的最新变化,并清晰描述了如何利用新功能和新配置。 内容保持简洁直接,以便于理解。