使用顺序流程
引言¶
CrewAI提供了一个灵活的框架,用于以结构化的方式执行任务,支持顺序和层次化流程。本指南概述了如何有效实施这些流程,以确保高效的任务执行和项目完成。
顺序流程概述¶
顺序流程确保任务一个接一个地执行,遵循线性进展。这种方法适用于需要按特定顺序完成任务的项目。
关键特性¶
- 线性任务流:通过按预定顺序处理任务,确保有序进展。
- 简洁性:最适合具有清晰、逐步任务的项目。
- 易于监控:便于轻松跟踪任务完成和项目进度。
实施顺序流程¶
要使用顺序流程,请组建您的团队并按需执行的顺序定义任务。
from crewai import Crew, Process, Agent, Task, TaskOutput, CrewOutput
# 定义您的代理
researcher = Agent(
role='研究员',
goal='进行基础研究',
backstory='一位经验丰富、热衷于发现洞察的研究员'
)
analyst = Agent(
role='数据分析师',
goal='分析研究成果',
backstory='一位细致的分析师,擅长发现模式'
)
writer = Agent(
role='作家',
goal='起草最终报告',
backstory='一位擅长撰写引人入胜故事的作家'
)
# 定义您的任务
research_task = Task(description='收集相关数据...', agent=researcher, expected_output='原始数据')
analysis_task = Task(description='分析数据...', agent=analyst, expected_output='数据洞察')
writing_task = Task(description='撰写报告...', agent=writer, expected_output='最终报告')
# 组建具有顺序流程的团队
report_crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research_task, analysis_task, writing_task],
process=Process.sequential
)
# 执行团队任务
result = report_crew.kickoff()
# 访问类型安全的输出
task_output: TaskOutput = result.tasks[0].output
crew_output: CrewOutput = result.output
注意:¶
顺序流程中的每个任务 必须 分配一个代理。确保每个Task包含一个agent参数。
工作流程示例¶
- 初始任务:在顺序流程中,第一个代理完成其任务并发出完成信号。
- 后续任务:代理根据流程类型接手任务,前序任务的结果或指令指导其执行。
- 完成:一旦最终任务执行完毕,流程结束,项目完成。
高级特性¶
任务委托¶
在顺序流程中,如果代理的allow_delegation设置为True,他们可以将任务委托给团队中的其他代理。当团队中有多个代理时,此功能会自动设置。
异步执行¶
任务可以异步执行,允许在适当的时候进行并行处理。要创建异步任务,请在定义任务时设置async_execution=True。
内存和缓存¶
CrewAI支持内存和缓存功能:
- 内存:在创建Crew时设置
memory=True以启用。这允许代理在任务之间保留信息。 - 缓存:默认启用缓存。设置
cache=False以禁用。
回调¶
您可以在任务和步骤级别设置回调:
task_callback:在每个任务完成后执行。step_callback:在每个代理执行的步骤后执行。
使用指标¶
CrewAI跟踪所有任务和代理的令牌使用情况。您可以在执行后访问这些指标。
顺序流程的最佳实践¶
- 顺序重要:按逻辑顺序排列任务,每个任务都建立在前一个任务的基础上。
- 清晰的任务描述:为每个任务提供详细的描述,以有效指导代理。
- 适当的代理选择:根据每个任务的要求匹配代理的技能和角色。
- 使用上下文:利用前序任务的上下文来指导后续任务。
此更新文档确保详细信息准确反映代码库的最新变化,并清晰地描述了如何利用新功能和配置。内容保持简洁直接,以确保易于理解。