基于 CrewAI 构建应用的决策要点分析

在使用 CrewAI 框架来实现我们需求之前,需要很好地评估 CrewAI 框架提供的各种能力,并选择一些与我们的需求相匹配的能力子集合来构建 AI Agent 应用,否则在实现的过程中,可能会遇到各种无法达到预期的困难。
我们首先要明确的是,为了更好地满足实际应用场景的需要,只有选择最合适的技术组件和方法,在应用场景下需求不断细化明确的过程中,向着更合适的方向进行架构迭代优化,这个过程中甚至可能需要微调或替换各种技术组件(框架的某些特性/能力支持)。
本文大部分内容,是基于 CrewAI 官网文档 “Evaluating Use Cases for CrewAI” 一节的内容,经过重新组织而完成的。

1. CrewAI 决策框架

在使用 CrewAI 框架实现我们的应用之前,CrewAI 给出了一个 “Complexity vs. Precision” 矩阵,它基于复杂性与精确性两个维度,划分了 4 个象限,并针对不同象限对复杂性、精确性的要求,提供了使用 CrewAI 的特性的指导和建议。4 个象限划分,如下图所示:

Complexity vs. Precision Matrix for CrewAI Applications

通过这个矩阵可以很好地评估,我们应该如何选择 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. 参考链接

Creative Commons License

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>