07.3 — CrewAI
定位: 角色化 Agent 编排框架——理解 CrewAI 如何通过"角色"来实现结构化的多 Agent 协作 面试高频度: ⭐⭐⭐
一、这是什么?为什么需要它?
CrewAI 是一个角色化多 Agent 编排框架,核心思想是让开发者定义 Agent 角色、任务和流程,然后由框架自动编排执行。
核心概念
| 概念 | 说明 |
|---|---|
| Agent | 角色化的智能体(有 role、goal、backstory) |
| Task | 需要完成的任务(有描述、预期输出、分配的 Agent) |
| Crew | Agent 团队(管理 Agent 和任务的执行) |
| Process | 执行流程(sequential / hierarchical) |
| Tool | Agent 可用的工具 |
为什么选择 CrewAI?
CrewAI 的差异化优势:
"角色"是一等公民——每个 Agent 有明确的角色描述
任务驱动——先定义任务,再分配给 Agent
结构化输出——每个 Task 可以定义预期输出格式
简单直观——三个核心概念(Agent + Task + Crew)即可上手二、原理拆解
python
from crewai import Agent, Task, Crew, Process
# 1. 定义角色化 Agent
researcher = Agent(
role="高级研究员",
goal="发现 AI 领域的最新趋势",
backstory="你是一个经验丰富的技术研究员,擅长信息收集和分析",
tools=[search_tool, web_scraper],
verbose=True,
allow_delegation=False, # 是否允许委托任务给其他 Agent
)
writer = Agent(
role="技术写手",
goal="撰写清晰的技术文章",
backstory="你是一个擅长将复杂技术概念转化为易懂文章的作者",
tools=[], # 写手不需要额外工具
verbose=True,
)
# 2. 定义任务
research_task = Task(
description="搜索 AI Agent 在 2025 年的最新发展",
expected_output="一份详细的技术趋势报告,包含 5 个关键技术方向",
agent=researcher,
)
writing_task = Task(
description="基于研究结果撰写一篇技术文章",
expected_output="一篇 1000 字左右的技术博客文章",
agent=writer,
context=[research_task], # 依赖研究任务的结果
)
# 3. 组建团队并执行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential, # 串行执行
verbose=True,
)
result = crew.kickoff()
print(f"最终输出: {result}")执行流程
Process.sequential(串行):
研究员(搜索) → 写手(撰写) → 完成
Process.hierarchical(分层):
管理员 → 分配任务 → 研究员 → 写手 → 管理员(汇总)CrewAI vs AutoGen
| 维度 | CrewAI | AutoGen |
|---|---|---|
| 核心模型 | 角色 + 任务 | 对话 |
| 控制方式 | 开发者定义流程 | Agent 自主对话 |
| 角色系统 | 一等公民(role/goal/backstory) | 通过 system message |
| 任务模型 | 内置 Task 对象 | 通过消息传递 |
| 适合场景 | 结构化的工作流 | 灵活的讨论式协作 |
三、面试视角
| 追问 | 答案要点 |
|---|---|
| CrewAI 的核心概念? | Agent(角色化智能体)、Task(任务定义)、Crew(团队管理)。Agent 有角色和目标,Task 有描述和输出格式,Crew 负责编排执行 |
| Process.sequential 和 Process.hierarchical 的区别? | Sequential:任务按顺序执行,前一个输出是后一个的输入。Hierarchical:有一个管理 Agent 分配任务和汇总结果。Sequential 简单可控,Hierarchical 灵活但复杂 |
| CrewAI 适用场景? | 结构化工作流:研究→写作、数据收集→分析→报告、内容审核流水线。不适合需要 Agent 自主讨论和辩论的场景 |
📚 相关链接
- **AutoGen** — 对比框架
- **角色分配与编排** — 角色理论
- ← 返回 **Agent框架索引**