Skip to content

07.3 — CrewAI

定位: 角色化 Agent 编排框架——理解 CrewAI 如何通过"角色"来实现结构化的多 Agent 协作 面试高频度: ⭐⭐⭐


一、这是什么?为什么需要它?

CrewAI 是一个角色化多 Agent 编排框架,核心思想是让开发者定义 Agent 角色、任务和流程,然后由框架自动编排执行。

核心概念

概念说明
Agent角色化的智能体(有 role、goal、backstory)
Task需要完成的任务(有描述、预期输出、分配的 Agent)
CrewAgent 团队(管理 Agent 和任务的执行)
Process执行流程(sequential / hierarchical)
ToolAgent 可用的工具

为什么选择 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

维度CrewAIAutoGen
核心模型角色 + 任务对话
控制方式开发者定义流程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框架索引**

Knowledge4J — Java 知识库