Ch14 Agent原理修订于 二〇二六年七月六日

深挖 CrewAI

一句话理解

CrewAI 是一个角色扮演式多 Agent 框架。它的核心思路是:定义 Agent 角色 —> 分配 Task(任务)—> Agent 组成 Crew(团队)协作完成。每个 Agent 像一个拥有特定职位和背景故事的员工,Crew 则是整个项目团队。

零基础理解

想象你要做一份市场研究报告。传统做法是一个人从头做到尾,或者你手动协调多个 LLM 对话。CrewAI 的做法是:给每个 Agent 发一张”角色卡”——

  • 你是数据分析师:擅长从数据中提取洞察,用 Python 处理数据
  • 你是研究员:擅长搜索和整理信息,写出结构化的研究报告
  • 你是写手:擅长把研究发现转化为流畅的 Markdown 文章

然后你告诉 CrewAI:“按顺序执行:先让研究员调研,研究员完成后把结果交给数据分析师验证,最后让写手整合成报告。“Agent 们就像真正的团队一样协作。

核心概念

Agent(智能体)

Agent 是 CrewAI 的基本执行单元。每个 Agent 由以下要素定义:

属性说明示例
role角色名称“Senior Data Analyst”
goal角色的目标“从数据中提取可执行的商业洞察”
backstory背景故事“你在一家顶级咨询公司工作了10年,擅长数据驱动的决策”
llm使用的 LLM 模型ChatOpenAI(model="gpt-5.5") # 2026年推荐
tools可使用的工具列表[SerperDevTool(), ScrapeWebsiteTool()]
verbose是否输出详细日志True
allow_delegation是否允许委托给其他 AgentFalse

Task(任务)

Task 定义 Agent 需要完成的工作:

属性说明
description任务描述,越具体越好
expected_output期望的输出格式和内容
agent分配给哪个 Agent
context依赖的其他 Task 的输出
async_execution是否异步执行

Crew(团队)

Crew 是 Agent 和 Task 的集合,以及执行流程的定义。

Process(执行流程)

流程类型说明
Process.sequential顺序执行:Task 按定义顺序依次执行
Process.hierarchical层级执行:一个 Manager Agent 分配任务给其他 Agent,类似项目经理

代码示例:2 个 Agent 协作完成研究报告

from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, ScrapeWebsiteTool

# 定义工具
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()

# Agent 1: 研究员
researcher = Agent(
    role="Research Analyst",
    goal="深入调研{ topic }的最新发展,撰写调研报告",
    backstory="你是一位资深研究员,擅长信息搜集和整理。你注重事实准确性,会交叉验证多个来源。",
    tools=[search_tool, scrape_tool],
    verbose=True,
    allow_delegation=False,
)

# Agent 2: 写手
writer = Agent(
    role="Technical Writer",
    goal="将研究结果转化为结构清晰、可读性强的 Markdown 文章",
    backstory="你是一位技术写手,擅长将复杂信息转化为易于理解的文字。你的文章结构清晰、逻辑严密。",
    tools=[],
    verbose=True,
    allow_delegation=False,
)

# Task 1: 研究
research_task = Task(
    description="调研{ topic }的最新进展,包括核心技术、主要玩家、市场趋势",
    expected_output="一份结构化的调研笔记,包含关键发现、数据来源、对比分析",
    agent=researcher,
)

# Task 2: 写作
write_task = Task(
    description="基于研究结果,撰写一篇 1500 字的 Markdown 文章",
    expected_output="一篇结构完整的 Markdown 文章,包含标题、引言、主体段落、结论",
    agent=writer,
    context=[research_task],  # 依赖 research_task 的输出
)

# 组建 Crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,
    verbose=True,
)

# 启动
result = crew.kickoff(inputs={"topic": "2026年AI Agent框架"})
print(result)

CrewAI vs AutoGen vs LangGraph 对比

维度CrewAIAutoGenLangGraph
设计哲学角色扮演,团队协作对话驱动,Agent 通过聊天协作图编排,用有向图定义工作流
主要维护方CrewAI Inc.MicrosoftLangChain
执行模式顺序 (Sequential) / 层级 (Hierarchical)对话轮次,支持 GroupChat有向图(节点+边),支持循环和分支
Human-in-the-loop支持(通过 human_input)原生支持(核心设计)支持(通过 interrupt)
学习曲线低,概念直观中,对话模式需理解高,需要理解图编程
适合场景快速原型、角色扮演类任务企业级、需要人工审核的工作流生产级复杂 Agent 系统
2026 年生态社区活跃,文档完善微软 Azure 生态集成LangChain 生态,LangSmith 可观测

2026 年定位

CrewAI 在 2026 年的定位是:最适合快速原型和角色扮演类任务的多 Agent 框架。

  • 优点:概念直观(角色、任务、团队),上手极快,适合演示和 PoC
  • 缺点:控制流不如 LangGraph 灵活,复杂场景下需要更多自定义
  • 典型场景:研究报告生成、内容创作流水线、简单的多 Agent 协作

如果你需要在 30 分钟内搭出一个多 Agent Demo,CrewAI 是首选。如果要做生产级系统,应该考虑 LangGraph。

相关笔记

来源

关联9

知识图谱

局部图谱 · 点节点跳转