使用分层流程
引言¶
CrewAI中的分层流程引入了一种结构化的任务管理方法,模拟传统的组织层级,以实现高效的任务分配和执行。这种系统化的工作流程通过确保任务以最佳效率和准确性处理,从而提升项目成果。
复杂性和效率
分层流程旨在利用像GPT-4这样的高级模型,优化令牌使用,同时更高效地处理复杂任务。
分层流程概述¶
默认情况下,CrewAI中的任务通过顺序流程进行管理。然而,采用分层方法可以在任务管理中建立清晰的层级,其中“管理”代理协调工作流程,分配任务并验证结果,以实现简化和有效的执行。这个管理代理现在可以由CrewAI自动创建,也可以由用户明确设置。
关键特性¶
- 任务分配:管理代理根据成员的角色和能力分配任务。
- 结果验证:管理代理评估结果,确保其符合要求的标准。
- 高效工作流程:模拟公司结构,提供组织化的任务管理方法。
- 系统提示处理:可选地指定系统是否应使用预定义提示。
- 停用词控制:可选地指定是否应使用停用词,支持包括o1模型在内的各种模型。
- 上下文窗口尊重:通过启用尊重上下文窗口来优先考虑重要上下文,这现在是默认行为。
- 分配控制:分配现在默认禁用,以给予用户明确的控制权。
- 每分钟最大请求:可配置选项,用于设置每分钟的最大请求次数。
- 最大迭代次数:限制获取最终答案的最大迭代次数。
实施分层流程¶
要利用分层流程,必须明确将流程属性设置为Process.hierarchical,因为默认行为是Process.sequential。定义一个带有指定管理员的团队,并建立清晰的指挥链。
工具和代理分配
在代理级别分配工具,以便在管理员的指导下,由指定的代理进行任务分配和执行。工具也可以在任务级别指定,以在任务执行期间精确控制工具的可用性。
管理员LLM要求
配置manager_llm参数对分层流程至关重要。系统需要设置一个管理员LLM以正常工作,确保量身定制的决策。
from langchain_openai import ChatOpenAI
from crewai import Crew, Process, Agent
# 代理定义时带有背景故事、缓存和详细模式等属性
researcher = Agent(
role='研究员',
goal='进行深入分析',
backstory='经验丰富的数据分析师,擅长发现隐藏趋势。',
cache=True,
verbose=False,
# tools=[] # 这可以可选指定;默认为空列表
use_system_prompt=True, # 为此代理启用或禁用系统提示
max_rpm=30, # 每分钟请求次数的限制
max_iter=5 # 获取最终答案的最大迭代次数
)
writer = Agent(
role='作家',
goal='创作吸引人的内容',
backstory='热爱技术领域故事创作的创意作家。',
cache=True,
verbose=False,
# tools=[] # 可选指定工具;默认为空列表
use_system_prompt=True, # 为此代理启用或禁用系统提示
max_rpm=30, # 每分钟请求次数的限制
max_iter=5 # 获取最终答案的最大迭代次数
)
# 建立具有分层流程和额外配置的团队
project_crew = Crew(
tasks=[...], # 在管理员监督下分配和执行的任务
agents=[researcher, writer],
manager_llm=ChatOpenAI(temperature=0, model="gpt-4"), # 如果未设置manager_agent,则为必填项
process=Process.hierarchical, # 指定分层管理方法
respect_context_window=True, # 为任务启用尊重上下文窗口
memory=True, # 启用内存使用以增强任务执行
manager_agent=None, # 可选:明确设置特定代理作为管理员,而不是manager_llm
planning=True, # 启用预执行策略规划功能
)
工作流程实战¶
- 任务分配:管理员根据每个代理的能力和可用工具,策略性地分配任务。
- 执行和审查:代理完成其任务,并可选择异步执行和回调函数,以简化工作流程。
- 顺序任务进展:尽管是分层流程,任务仍遵循逻辑顺序,以实现平稳进展,由管理员监督。
结论¶
在CrewAI中采用分层流程,并正确配置和理解系统的能力,有助于实现组织化和高效的项目管理方法。利用高级功能和自定义选项,根据您的特定需求调整工作流程,确保最佳任务执行和项目成功。