在使用 CrewAI 框架来实现我们需求之前,需要很好地评估 CrewAI 框架提供的各种能力,并选择一些与我们的需求相匹配的能力子集合来构建 AI Agent 应用,否则在实现的过程中,可能会遇到各种无法达到预期的困难。
我们首先要明确的是,为了更好地满足实际应用场景的需要,只有选择最合适的技术组件和方法,在应用场景下需求不断细化明确的过程中,向着更合适的方向进行架构迭代优化,这个过程中甚至可能需要微调或替换各种技术组件(框架的某些特性/能力支持)。
本文大部分内容,是基于 CrewAI 官网文档 “Evaluating Use Cases for CrewAI” 一节的内容,经过重新组织而完成的。
1. CrewAI 决策框架
在使用 CrewAI 框架实现我们的应用之前,CrewAI 给出了一个 “Complexity vs. Precision” 矩阵,它基于复杂性与精确性两个维度,划分了 4 个象限,并针对不同象限对复杂性、精确性的要求,提供了使用 CrewAI 的特性的指导和建议。4 个象限划分,如下图所示:
通过这个矩阵可以很好地评估,我们应该如何选择 CrewAI 具备的能力,从而更好地满足应用需求。
下面先给出,在 CrewAI Application 的上下文之内,“复杂性” 和 “精确性” 具体包含哪些要点,这样能够更好地将我们面对的具体应用场景的要求,更准确地映射到 “复杂性” 和 “精确性” 对应的维度上。
1.1 复杂性与精确性
复杂性(Complexity)包括如下几个要点:
- 应用所要求的不同步骤/操作的数量
- 需要执行的任务(Task)的多样性
- 应用中不同组件或不同步骤之间的相互依赖程度
- 是否有条件约束或分支逻辑的要求
- 待构建的整个 Workflow 的复杂程度
精确性(Precision)包括如下几个要点:
- 最终输出结果的精确性要求
- 对结构化(Structured)的、可预测(Predictable)的结果的要求
- 可再现性(Reproducibility)要求
- 程序运行过程中,每一个执行步骤的可控制程度要求
- 对可变化结果输出的容忍性(Tolerance)
1.2 复杂性 vs 精确性四象限
1.2.1 象限一:低复杂性+低精确性
1、象限特征
- 简单的、直接的任务
- 能够容忍输出结果的可变性
- 应用执行的步骤数非常有限
- 创意类或探索类应用
2、应用场景参考
- 基础的内容生成类应用
- 想法头脑风暴
- 简单的提取摘要类任务
- 创意写作助手
3、策略推荐
选择简单的 Crew,或者简单的 Agent 来构建应用。
1.2.2 象限二:低复杂性+高精确性
1、象限特征
- 具有强制性、结构化输出要求的简单 Workflow
- 具有可再现性结果输出需求的场景
- 有限步骤,但要求满足高精确性
- 常常包含数据处理、数据转换要求的场景
2、应用场景参考
- 数据抽取与转换
- 表单填充与校验
- 结构化内容生成(JSON、XML)
- 简单分类任务
3、策略推荐
选择能够直接与 LLM 交互/调用的 Flow,或者具有结构化输出的 Crew。
1.2.3 象限三:高复杂性+低精确性
1、象限特征
- 具有很多步骤的多阶段处理应用场景
- 创意或探索类输出
- 各个组件之间具有复杂的交互
- 能够容忍最终结果的可变性
2、应用场景参考
- 调研与分析场景
- 内容创建 Pipeline
- 数据探查分析
- 解决创意类问题
3、策略推荐
选择具有多个专业化(Specialized)Agent 构建而成的复杂 Crew。
1.2.4 象限四:高复杂性+高精确性
1、象限特征
- 结果要求结构化输出的复杂 Workflow
- 具有严格精确性要求的、多个步骤之间相互依赖的场景
- 同时满足复杂处理和精确结果要求的场景
- 常被认为是至关重要(mission-critical)类的应用场景
2、应用场景参考
- 企业决策支持系统
- 复杂处理 Pipeline
- 多阶段文档处理
- 例行化(受监管类)行业应用场景
3、策略推荐
选择使用 Flow,能够支持编排(Orchestrating)具有带校验步骤的多个 Crew。
2. 实用的评估框架
为了能够在实际使用 CrewAI 之前进行评估,可以参考下面的评估流程:
2.1 评估复杂性要求
通过考虑以下因素,在 1-10 的范围内对应用程序的复杂性进行打分(打完分后,计算平均得分作为总体的复杂性分数):
2.1.1 步骤数量:要求有多少个不同的操作步骤?
- 1-3 步:低复杂性(1-3)
- 4-7 步:中复杂性(4-7)
- 8+ 步:高复杂性(8-10)
2.1.2 相互依赖性:不同部分相互依赖程度如何?
- 依赖非常少:低依赖性(1-3)
- 一些依赖:中依赖性(4-7)
- 很多复杂依赖:高依赖性(8-10)
2.1.3 条件逻辑:需要多少分支和决策?
- 线性流程:低复杂性(1-3)
- 一些分支:中复杂性(4-7)
- 复杂决策树:高复杂性(8-10)
2.1.4 领域知识:所需要的知识有多么专业?
- 通用知识:低复杂性(1-3)
- 一些专业知识:中复杂性(4-7)
- 在多个领域具有深厚的专业知识:高复杂性(8-10)
2.2 评估精确性要求
通过考虑以下因素,在 1-10 的范围内对精确性要求进行评分(打完分后,计算平均得分作为总体的精确性要求得分):
2.2.1 必须输出内容的结构化程度如何?
- 自由形式的文本输出:低精确性(1-3)
- 半结构化输出:中精确性(4-7)
- 严格结构化输出(JSON、XML):高精确性(8-10)
2.2.2 精确度要求:事实的准确性有多么重要?
- 创意类内容:低精确性(1-3)
- 信息类内容:中精确性(4-7)
- 关键类信息:高精确性(8-10)
2.2.3 可再现性要求:各批次输出的结果需要有多么强的一致性要求?
- 能够接收可变性:低精确性(1-3)
- 有一定的一致性要求:中精确性(4-7)
- 需要精确的可再现性:高精确性(8-10)
2.2.4 错误容忍度:错误结果的影响是什么?
- 影响不大:低精确性(1-3)
- 中度影响:中精确性(4-7)
- 影响很大:高精确性(5-10)
2.3 映射到 “Complexity vs. Precision” 矩阵
根据上面两个步骤得到的总体复杂性得分、精确性要求得分,映射到对应的四象限的某一个象限,得出适合的当前要构建的应用的选型方法:
- 低复杂性 (1-4), 低精确性 (1-4):Simple Crews
- 低复杂性 (1-4), 高精确性 (5-10):Flows with direct LLM calls
- 高复杂性 (5-10), 低精确性 (1-4):Complex Crews
- 高复杂性 (5-10), 高精确性 (5-10):Flows orchestrating Crews
2.4 需要考虑的其他因素
- 开发时间:Crew 一般用于快速构建原型
- 运维要求:Flow 能够更好地支持长期可维护性
- 团队专业性:考虑团队对其他方法的熟悉程度
- 可扩展性要求:Flow 能够更好地支持扩展以适应复杂应用场景
- 集成要求:考虑解决方案与现有系统怎样进行集成
3. Crew 与 Flow 选择参考
Crew 与 Flow 是 CrewAI 框架中两个非常核心的组件,通过它们可以构建满足各种需求的应用程序。深入理解在什么场景下使用 Crew 或 Flow 更加合适,能够更好地指导我们做出更佳的决策。
3.1 Crew 是什么?
在 CrewAI中,Crew 代表了一组协同工作的 Agent,它们能够共同完成一系列任务。每个 Crew 都定义了任务执行、Agent 协作和整体 Workflow 的策略。
有关 Crew 更详细的说明和使用,可以参考官网文档 https://docs.crewai.com/concepts/crews。
3.2 Flow 是什么?
Flow 是 CrewAI 提供的一个强大的特性,它旨在简化 AI Workflow 的创建和管理。Flow 允许开发人员高效地组合并协调编码任务(Task)和 Crew,为构建复杂的 AI 自动化应用程序提供了一个强大的框架。
Flow 允许我们创建结构化的、事件驱动的 Workflow,并提供了一种无缝的方式来连接多个任务、管理状态和控制 AI 应用程序中的执行流。借助 Flow,我们可以轻松设计和实现具有多个步骤的 Workflow,更加充分地发挥出 CrewAI 的潜力。
有关 Flow 更详细的说明和使用,可以参考官网文档 https://docs.crewai.com/concepts/flows。
3.3 使用 Crew 的最佳场景
- 需要更智能的协作:具有不同专业化能力的多个 Agent 共同协作完成任务
- 待解决的问题更依赖思维涌现:解决方案受益于不同的视角和方法
- 具有创造性或分析性能力的任务:工作涉及研究、内容创建或分析
- 强调灵活性胜过严格的结构:Workflow 受益于 Agent 的自主性
- 输出结构具有一定的灵活性:能够接受输出结构有一定的变化
3.4 使用 Flow 的最佳场景
- 需要对任务执行做精确控制:Workflow 需要精确排序和状态管理
- 应用具有复杂的状态:需要跨多个步骤对状态进行维护与转换
- 需要结构化的、可预测的输出:应用程序要求一致性、格式化的结果
- Workflow 包含条件逻辑:对于不同的中间结果需要有不同的执行路径
- 需要将 AI 与过程性代码相结合:方案要求兼具 AI 能力与传统编程能力
3.3 混合使用 Crew 与 Flow 的最佳场景
- 复杂多阶段处理场景:使用 Flow 编排整体流程,使用 Crew 实现复杂子任务
- 具有创意性和结构性要求的场景:使用 Crew 实现创意性的部分,使用 Flow 实现结构化处理的部分
- 企业级 AI 应用场景:使用 Flow 管理状态和处理流程,使用 Crew 实现具有专业性要求的任务
4. 总结
使用 CrewAI 框架构建 AI Agent 应用程序,需要在 Crew 和 Flow 之间进行选择,或者将它们组合在一起来使用,这样一个关键的架构决策过程,能够影响到我们使用 CrewAI 应用程序的有效性、可维护性和可扩展性。通过对对应场景的复杂性和精确性进行评估,能够更好地做出与特定要求相匹配的明智决策。
一个推荐的方法是,随着需求的不断细化而不断调整我们的决策,以满足不同阶段的不同需要。我们可以从最简单的解决方案开始,随着经验的积累和需求的明确,不断地调整和完善架构,最终达到我们期望实现的业务目标或系统目标。
5. 参考链接
- Evaluating Use Cases for CrewAI
- https://docs.crewai.com/concepts/crews
- https://docs.crewai.com/concepts/flows

本文基于署名-非商业性使用-相同方式共享 4.0许可协议发布,欢迎转载、使用、重新发布,但务必保留文章署名时延军(包含链接:http://shiyanjun.cn),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。