👥 CrewAI
1. 概述
CrewAI 是一个以角色驱动为核心设计理念的多Agent协作框架。 它让你像组建一个真实团队一样定义Agent:每个Agent有明确的角色(Role)、目标(Goal)、背景故事(Backstory), 然后按照设定的流程(Process)协作完成任务。
💡 CrewAI 设计哲学
"组建你的AI梦之队" —— 为每个Agent赋予鲜明的角色特征和使命,让Agent像人类团队成员一样各司其职、高效协作。
2. 核心概念
2.1 Agent(角色驱动)
CrewAI的Agent定义非常直观,围绕角色展开:
🎭 Agent定义要素
| 属性 | 说明 | 示例 |
|---|---|---|
| role | Agent的专业角色 | "Senior Data Analyst" |
| goal | Agent的核心目标 | "Extract actionable insights from data" |
| backstory | 角色背景故事(增强行为一致性) | "You've worked at a top consulting firm..." |
| tools | Agent可用的工具列表 | [search_tool, calculator_tool] |
| allow_delegation | 是否允许委派任务给其他Agent | True / False |
| verbose | 是否输出详细执行日志 | True / False |
2.2 Task(任务)
Task定义了需要完成的具体工作。每个Task可以指定:
- description:任务的详细描述
- expected_output:期望的输出格式和内容
- agent:负责执行的Agent
- context:依赖的前置任务(自动建立执行顺序)
- async_execution:是否异步并行执行
2.3 Crew(团队)
Crew 是 Agent 和 Task 的容器,定义了协作流程:
🔄 Crew 协作流程类型
| 流程类型 | 说明 | 适用场景 |
|---|---|---|
| Sequential(顺序) | 按Task定义的先后顺序依次执行 | 线性流水线任务,如:研究→分析→撰写报告 |
| Hierarchical(层级) | 由一个Manager Agent分配和监督任务 | 复杂项目,需要统一协调和动态分配 |
| 自定义流程 | 通过 @listen 装饰器实现自定义执行流 | 特殊的协作模式,超出内置流程能力 |
3. 工具集成
CrewAI内置了丰富的工具生态系统,也支持LangChain工具和自定义工具:
🔧 内置工具
SerperDevTool(搜索)、ScrapeWebsiteTool(网页抓取)、FileReadTool、DirectoryReadTool、CodeDocsSearchTool 等
🔗 LangChain工具
直接使用LangChain生态中的任何Tool,无缝集成
🛠️ 自定义工具
继承 BaseTool,实现 _run() 方法即可创建自己的工具
4. CrewAI vs AutoGen 对比
| 维度 | CrewAI | AutoGen |
|---|---|---|
| 设计理念 | 角色驱动,团队分工 | 对话驱动,自由交流 |
| 流程控制 | 预定义顺序/层级 | 动态路由,自由选择speaker |
| 学习曲线 | 低,概念直觉 | 中,需理解对话机制 |
| 代码执行 | 依赖外部工具 | 内置代码执行沙箱 |
| 确定性 | 高(预定义流程) | 低(动态决策) |
| 灵活性 | 中(流程固定) | 高(对话式动态适应) |
| 生态规模 | 快速增长中 | 微软背靠,企业级支持 |
| 典型场景 | 内容创作、研究分析 | 代码生成、自动化开发 |
🎯 选型建议
- 需要可控、可预测的流程,选 CrewAI
- 需要灵活的多Agent协商和动态适应,选 AutoGen
- 两者可以互补:CrewAI 管理整体流程,AutoGen 处理需要灵活协商的子任务
5. 适用场景
✅ 适合
- 内容创作流水线(研究→撰写→审核→发布)
- 市场调研与竞争分析
- 需要明确角色分工的团队协作
- 快速原型验证多Agent方案
- 对确定性要求较高的任务流程
❌ 不适合
- 需要动态协商的开放式任务(用AutoGen)
- 需要代码自主执行与调试的场景(用AutoGen)
- 超大规模Agent集群(层级Manager有瓶颈)
- 对实时性要求极高的系统